<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>ProgramGood.Net</title>
  <link rel="alternate" type="text/html" href="http://www.programgood.net/" />
  <link rel="self" href="http://www.programgood.net/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2012-01-18T14:30:57.21625-05:00</updated>
  <author>
    <name>Dave Mateer</name>
  </author>
  <subtitle>The journey to becoming a great programmer</subtitle>
  <id>http://www.programgood.net/</id>
  <generator uri="http://dasblog.info/" version="2.2.8279.16125">DasBlog</generator>
  <entry>
    <title>N2 CMS–Initial Thoughts and Installation</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2012/01/18/N2CMSInitialThoughtsAndInstallation.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,4d670777-6cff-4880-96b5-245a5b88d8ba.aspx</id>
    <published>2012-01-18T14:30:57.21625-05:00</published>
    <updated>2012-01-18T14:30:57.21625-05:00</updated>
    <category term="n2" label="n2" scheme="http://www.programgood.net/CategoryView,category,n2.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Prepare_AllDependencies.bat
</p>
        <p>
checks for .NET4 then runs build..
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb.png" width="645" height="321" />
          </a>
        </p>
        <p>
hmm.. possibly a problem with an early version of .NET4.5?
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_1.png" width="644" height="394" />
          </a>
        </p>
        <p>
also on their wiki is broken.. hmmm
</p>
        <p>
trying to uninstall the CTP
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_2.png" width="644" height="230" />
          </a>
        </p>
        <p>
cool the build now worked.
</p>
        <h3>Introduction:
</h3>
        <p>
N2 first published in 2006.. since then 45 versions have been released with the latest
being 2.2 in June 2011.
</p>
        <p>
couldn’t get MVC one to run.. suspect it needs MVC2 and I have 3.
</p>
        <p>
Web Platform Installer has it but version 2.1.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_8.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_3.png" width="618" height="484" />
          </a>
        </p>
        <p>
can also do webmatrix
</p>
        <p>
Dinamico is the MVC3 one:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_10.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_4.png" width="644" height="480" />
          </a>
        </p>
        <p>
or templates:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_14.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_6.png" width="644" height="450" />
          </a>
        </p>
        <p>
Can also get it via NuGet (Dianamico too)…gets Castle Core, NHibernate, Lucene, Castle.Windsor,
DotNetZip, SQLLite
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_12.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_5.png" width="644" height="367" />
          </a>
        </p>
        <p>
got this:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_16.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_7.png" width="644" height="171" />
          </a>
        </p>
        <p>
latest version of log4net i 1.2.11 
</p>
        <p>
hmmm..grabbed it from here: <a href="http://archive.apache.org/dist/incubator/log4net/1.2.10/">http://archive.apache.org/dist/incubator/log4net/1.2.10/</a> 
and put the dll in refs.
</p>
        <p>
Then got to installer screen:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_18.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_8.png" width="644" height="311" />
          </a>
        </p>
        <p>
then admin screen
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_20.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/N2-CMSInitial-Thoughts-and-Installation_C90E/image_thumb_9.png" width="644" height="386" />
          </a>
        </p>
        <p>
first impressions.. not that slick..looks old…and not many people seem to use it. 
</p>
        <p>
videos:
</p>
        <p>
          <a href="http://training.lithe.net.au/basics/introduction-to-n2">http://training.lithe.net.au/basics/introduction-to-n2</a>
        </p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=4d670777-6cff-4880-96b5-245a5b88d8ba" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Resharper Userful Bits</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2012/01/16/ResharperUserfulBits.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,3afbb5f0-ac99-4b1f-bb8f-e1b254bd09b5.aspx</id>
    <published>2012-01-15T20:05:46.471875-05:00</published>
    <updated>2012-01-15T20:05:46.471875-05:00</updated>
    <category term="Resharper" label="Resharper" scheme="http://www.programgood.net/CategoryView,category,Resharper.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://levelnis.co.uk/blog/the-wonderful-world-of-resharper" href="http://levelnis.co.uk/blog/the-wonderful-world-of-resharper">http://levelnis.co.uk/blog/the-wonderful-world-of-resharper</a>
        </p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=3afbb5f0-ac99-4b1f-bb8f-e1b254bd09b5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TDD 4–Patterns and Practices</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/30/TDD4PatternsAndPractices.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,f5e628cf-5525-4821-ac64-7024db4ca9ea.aspx</id>
    <published>2011-12-29T21:04:35.446125-05:00</published>
    <updated>2011-12-29T21:04:35.446125-05:00</updated>
    <category term="Patterns" label="Patterns" scheme="http://www.programgood.net/CategoryView,category,Patterns.aspx" />
    <category term="TDD" label="TDD" scheme="http://www.programgood.net/CategoryView,category,TDD.aspx" />
    <category term="TekPub" label="TekPub" scheme="http://www.programgood.net/CategoryView,category,TekPub.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
“An <i>event</i> in C# is a way for a class to provide notifications to clients of
that class when some interesting thing happens to an object.”
</p>
        <p>
eg every time we call Add, we want a notification to clients (logger) that something
interesting happened.
</p>
        <ul>
          <li>
publisher</li>
          <li>
subscriber</li>
        </ul>
        <p>
Action&lt;string&gt;
</p>
        <p>
- if we were in .NET2 then public event would have to be of some delegate type.
</p>
        <p>
-  Would have to declare a delegate type of function that would return a string
</p>
        <p>
3.5  Action&lt;T&gt;
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ee91b16a-c932-4ab1-b078-a77f27ad8651" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//declare and assign
it at the same time (so don't have to check it is null every time)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">event</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Action</span>
              <span style="color:#e8e2b7">&lt;</span>
              <span style="color:#93c763">string</span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3"> OnAdd </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3"> {
};</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">ILogger</span>
              <span style="color:#f1f2f3"> logger;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">ILogger</span>
              <span style="color:#f1f2f3"> SecondaryLogger
{ </span>
              <span style="color:#93c763">get</span>
              <span style="color:#f1f2f3">; </span>
              <span style="color:#93c763">set</span>
              <span style="color:#f1f2f3">;
}</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> StringCalculator(</span>
              <span style="color:#8c8cb4">ILogger</span>
              <span style="color:#f1f2f3"> logger)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">logger </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> logger;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> Add(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> OnAdd</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> LogNumbers(numbers);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (IsEmpty(numbers))</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> DefaultEmptyResult();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> AllOtherValues(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
declaring the event, and invoking when add is pressed:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e007c4a3-0e22-4675-a4ba-582f62471028" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_Always_TriggersOnAddEvent()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//bool wasTriggered
= false;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> eventParam </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> GetDefaultCalc();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//lambda way</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//sc.OnAdd += s =&gt;
wasTriggered = true;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//so whenever someone
invokes the event, wasTriggered will turn to true</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//sc.OnAdd += delegate(string
s) { wasTriggered = true; };</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//register for event</span>
              <br />
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">OnAdd </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> s)
{ eventParam </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> s;
};</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">"1"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Assert.IsTrue(wasTriggered);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ec7600">"1"</span>
              <span style="color:#f1f2f3">,
eventParam);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
subscribing to event, passing in a delegate
</p>
        <h3>Extract and Override
</h3>
        <p>
very powerful as can break dependencies easily without interfaces
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=f5e628cf-5525-4821-ac64-7024db4ca9ea" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Delegates and Events</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/28/DelegatesAndEvents.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,c097ef51-d45b-4e60-b7f4-1955a6cf3583.aspx</id>
    <published>2011-12-28T18:14:16.3055-05:00</published>
    <updated>2011-12-29T21:02:09.14925-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.programgood.net/CategoryView,category,Events.aspx" />
    <category term="Events and Delegates" label="Events and Delegates" scheme="http://www.programgood.net/CategoryView,category,EventsAndDelegates.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Delegates – “they encapsulate a bit of behaviour”.. Initally from Jon Skeets Tekpub
videos:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4144e09e-e3e2-469b-b37f-c20cf212f26a" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Int32Action</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> value);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Delegates</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> RandomRob(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> value)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Delegate
implementation: {</span>
              <span style="color:#3cb371">0}</span>
              <span style="color:#ec7600">"</span>
              <span style="color:#f1f2f3">,
value); </span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//static means related
to the type rather than any specific instance of the type</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> StaticRob(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> value)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Static
method: {</span>
              <span style="color:#3cb371">0}</span>
              <span style="color:#ec7600">"</span>
              <span style="color:#f1f2f3">,
value); </span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
and calling:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:835a63fd-5d64-4363-8f4e-884154a8a4ce" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> SimpleDelegateFromMethod()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Delegates</span>
              <span style="color:#f1f2f3"> target </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Delegates</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//C#1 syntax</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Int32Action</span>
              <span style="color:#f1f2f3"> action </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Int32Action</span>
              <span style="color:#f1f2f3">(target</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">RandomRob);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//same.. calling the
delegate which has been setup to be target.RandomRob</span>
              <br />
              <span style="color:#f1f2f3"> action</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> action(</span>
              <span style="color:#ffcd22">6</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> DelegateFromStaticMethod()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Int32Action</span>
              <span style="color:#f1f2f3"> action </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Int32Action</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">Delegates</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">StaticRob);</span>
              <br />
              <span style="color:#f1f2f3"> action</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(</span>
              <span style="color:#ffcd22">7</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
 
</p>
        <h3>Events
</h3>
        <p>
Observer pattern.
</p>
        <p>
Here we are using pub/sub without events:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:44b258ad-e152-41fe-a4f5-cbcad7fdc178" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventRaiserTest</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> ReportToConsole(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> text)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Called:
{</span>
              <span style="color:#3cb371">0}</span>
              <span style="color:#ec7600">"</span>
              <span style="color:#f1f2f3">,
text);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> RaiseEvents()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//C#1</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//FakeEventHandler
handler = new FakeEventHandler(ReportToConsole);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//C#2 - implicit method
group conversions</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> handler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> ReportToConsole;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventRaiser</span>
              <span style="color:#f1f2f3"> raiser </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventRaiser</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">DoSomething(</span>
              <span style="color:#ec7600">"Not
subscribed"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AddHandler(handler);</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">DoSomething(</span>
              <span style="color:#ec7600">"Subscribed"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AddHandler(handler);</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">DoSomething(</span>
              <span style="color:#ec7600">"Subscribed
twice"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">RemoveHandler(handler);</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">RemoveHandler(handler);</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">DoSomething(</span>
              <span style="color:#ec7600">"Unsubscribed"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
asdf
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f5d92c1b-a498-4f3b-abee-3017e5ba2101" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventRaiser</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> AddHandler(</span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> handler)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> RemoveHandler(</span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> handler)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">-</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> DoSomething(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> text)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> tmp </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (tmp</span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> tmp</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(text);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <h3>Longhand EventRaiser:
</h3>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5484acbb-bc1e-4e78-bf7e-18e6ddaf03c3" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LonghandEventRaiserTest</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> ReportToConsole(</span>
              <span style="color:#93c763">object</span>
              <span style="color:#f1f2f3"> sender, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#f1f2f3"> e)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"ReportToConsole
was called"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> RaiseEvents()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//C#1</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//FakeEventHandler
handler = new FakeEventHandler(ReportToConsole);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//C#2 - implicit method
group conversions</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> handler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> ReportToConsole;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> raiser </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LonghandEventRaiser</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">OnClick(</span>
              <span style="color:#ec7600">"Not
subscribed"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Click </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">OnClick(</span>
              <span style="color:#ec7600">"Subscribed"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Click </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">OnClick(</span>
              <span style="color:#ec7600">"Subscribed
twice"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Click </span>
              <span style="color:#e8e2b7">-=</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Click </span>
              <span style="color:#e8e2b7">-=</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> raiser</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">OnClick(</span>
              <span style="color:#ec7600">"Unsubscribed"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
asdf
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:92ecc61f-0ff3-416d-8bd0-efba25ac3b86" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">namespace</span>
              <span style="color:#f1f2f3"> MasteringCSharp</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Tests</span>
              <br />
              <span style="color:#f1f2f3">{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">object</span>
              <span style="color:#f1f2f3"> sender, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#f1f2f3"> e);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LonghandEventRaiser</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> AddHandler(</span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> handler)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> RemoveHandler(</span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> handler)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">-</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> OnClick(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> text)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> tmp </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (tmp</span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> tmp</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Empty);</span>
              <br />
              <span style="color:#f1f2f3"> } </span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">event</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> Click</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">add</span>
              <span style="color:#f1f2f3"> {
AddHandler(</span>
              <span style="color:#93c763">value</span>
              <span style="color:#f1f2f3">);}</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">remove</span>
              <span style="color:#f1f2f3"> {RemoveHandler(</span>
              <span style="color:#93c763">value</span>
              <span style="color:#f1f2f3">);}</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">}</span>
            </div>
          </div>
        </div>
        <p>
but can simplify..fairly simple implementation of the observer pattern:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d8816738-7241-4516-b8a4-7fbbb8da9398" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">object</span>
              <span style="color:#f1f2f3"> sender, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#f1f2f3"> e);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LonghandEventRaiser</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> OnClick(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> text)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> tmp </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (tmp</span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> tmp</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Empty);</span>
              <br />
              <span style="color:#f1f2f3"> } </span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">event</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> Click</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">add</span>
              <span style="color:#f1f2f3"> {
currentHandler </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">value</span>
              <span style="color:#f1f2f3">;
}</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">remove</span>
              <span style="color:#f1f2f3"> {currentHandler </span>
              <span style="color:#e8e2b7">-=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">value</span>
              <span style="color:#f1f2f3">;}</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
but we can do better!
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e100818e-457d-4de4-a278-8e44907d598e" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> OnClick(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> text)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Click refers to
the field which is auto genned</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> tmp </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> Click;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (tmp</span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> tmp</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Empty);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//declared with a
field like event</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">event</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">ClickHandler</span>
              <span style="color:#f1f2f3"> Click;</span>
            </div>
          </div>
        </div>
        <p>
 
</p>
        <p>
 
</p>
        <h3>Other Ways of thinking of Delegates and Events
</h3>
        <p>
“An <i>event</i> in C# is a way for a class to provide notifications to clients of
that class when some interesting thing happens to an object”
</p>
        <p>
          <a href="http://www.akadia.com/services/dotnet_delegates_and_events.html">http://www.akadia.com/services/dotnet_delegates_and_events.html</a>
        </p>
        <p>
Calling a function directly:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cc49ef0f-610b-4b77-baa7-7c75b55da036" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Program</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyClass</span>
              <span style="color:#f1f2f3"> mc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyClass</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> mc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Process();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyClass</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Process()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"In
Process"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <h3>Basic Delegate
</h3>
        <p>
Sometimes we don’t want to call a function directly – we’d like to pass it to somebody
else so they can call it.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:31a0f137-df25-4fba-85b4-0994e9fbe089" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Program</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> s);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3"> consoleLog </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3">(ConsoleLoggerFunction);</span>
              <br />
              <span style="color:#f1f2f3"> consoleLog</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(</span>
              <span style="color:#ec7600">"hello
world"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> consoleLog(</span>
              <span style="color:#ec7600">"Another
way"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> ConsoleLoggerFunction(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> s)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Message
is: {</span>
              <span style="color:#3cb371">0}</span>
              <span style="color:#ec7600">"</span>
              <span style="color:#f1f2f3">,
s);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <h3>Calling Static Functions
</h3>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6fee9625-2c87-49d7-a615-04ae1e86f439" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Program</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#f1f2f3"> p </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3"> logger </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3">(Logger);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//implicit method
group conversion</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Person.LogDelegate
logger = Logger;</span>
              <br />
              <span style="color:#f1f2f3"> p</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Process(logger);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Logger(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Process(</span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3"> logDelegate)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (logDelegate </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> logDelegate</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(</span>
              <span style="color:#ec7600">"Doing
stuff"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
and then use a FakeLogger in tests:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:84964445-03f1-4dcf-b238-bed0f70aad02" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Process_WhenCalled_ShouldWriteToLogPassedIntoDelegate()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#f1f2f3"> p </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3"> logDelegate </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">LogDelegate</span>
              <span style="color:#f1f2f3">(FakeLogger);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> p</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Process(logDelegate);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> FakeLogger(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"FakeLogger:
{</span>
              <span style="color:#3cb371">0}</span>
              <span style="color:#ec7600">"</span>
              <span style="color:#f1f2f3">,
message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
or could have simply used an interface:
</p>
        <p>
******below is just for reference****** actually in the interest of keeping things
simple, am going to go for more of an interface style in my TDD/Logging strategy as
eventing can get complex quickly.
</p>
        <h3>Calling Member Functions
</h3>
        <p>
hmm – could be better
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:73116214-7e7c-4719-aa51-249b9b861516" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">internal</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyClass</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//takes a single string
parameter and no return type</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LogHandler</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Process(</span>
              <span style="color:#678cb1">LogHandler</span>
              <span style="color:#f1f2f3"> lh)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (lh </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> lh(</span>
              <span style="color:#ec7600">"Process()
begin"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (lh </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> lh(</span>
              <span style="color:#ec7600">"Process()
end"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// The FileLogger
class merely encapsulates the file I/O</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileLogger</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileStream</span>
              <span style="color:#f1f2f3"> fileStream;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StreamWriter</span>
              <span style="color:#f1f2f3"> streamWriter;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Constructor</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> FileLogger(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> filename)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> fileStream </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileStream</span>
              <span style="color:#f1f2f3">(filename, </span>
              <span style="color:#678cb1">FileMode</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Create);</span>
              <br />
              <span style="color:#f1f2f3"> streamWriter </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StreamWriter</span>
              <span style="color:#f1f2f3">(fileStream);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Member Function
which is used in the Delegate</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Logger(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> s)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> streamWriter</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(s);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Close()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> streamWriter</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Close();</span>
              <br />
              <span style="color:#f1f2f3"> fileStream</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Close();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">TestApplication</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileLogger</span>
              <span style="color:#f1f2f3"> fl </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileLogger</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"process.log"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyClass</span>
              <span style="color:#f1f2f3"> mc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyClass</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyClass</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">LogHandler</span>
              <span style="color:#f1f2f3"> myLogger </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyClass</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">LogHandler</span>
              <span style="color:#f1f2f3">(fl</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Logger);</span>
              <br />
              <span style="color:#f1f2f3"> mc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Process(myLogger);</span>
              <br />
              <span style="color:#f1f2f3"> fl</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Close();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <h3>Events
</h3>
        <ul>
          <li>
Publishers 
</li>
          <li>
Subscribers 
</li>
        </ul>
        <p>
want a simple example of a logger using events - <a href="http://stackoverflow.com/questions/8663736/delegate-and-events-architecture-with-a-logger">http://stackoverflow.com/questions/8663736/delegate-and-events-architecture-with-a-logger</a></p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1c99e0bf-8c8e-4af7-af8f-72c9c732487a" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//takes a single string
parameter and no return type</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LogHandler</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Define an Event
based on the above Delegate</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">event</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">LogHandler</span>
              <span style="color:#f1f2f3"> Log;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//call the event using
OnXXX where XXX is the name of the event</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Process()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> OnLog(</span>
              <span style="color:#ec7600">"Process()
begin"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> OnLog(</span>
              <span style="color:#ec7600">"Process()
end"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">protected</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> OnLog(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> message)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (Log </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> Log(message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileLogger</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileStream</span>
              <span style="color:#f1f2f3"> fileStream;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StreamWriter</span>
              <span style="color:#f1f2f3"> streamWriter;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> FileLogger(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> filename)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> fileStream </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileStream</span>
              <span style="color:#f1f2f3">(filename, </span>
              <span style="color:#678cb1">FileMode</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Create);</span>
              <br />
              <span style="color:#f1f2f3"> streamWriter </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StreamWriter</span>
              <span style="color:#f1f2f3">(fileStream);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Member Function
which is used in the Delegate</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Logger(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> s)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> streamWriter</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(s);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Close()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> streamWriter</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Close();</span>
              <br />
              <span style="color:#f1f2f3"> fileStream</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Close();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">TestApplication</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> ConsoleLogger(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> s)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(s);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileLogger</span>
              <span style="color:#f1f2f3"> fl </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FileLogger</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"process.log"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#f1f2f3"> person </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// Subscribe the Functions
ConsoleLogger and fl.ConsoleLogger</span>
              <br />
              <span style="color:#f1f2f3"> person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Log </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">LogHandler</span>
              <span style="color:#f1f2f3">(ConsoleLogger);</span>
              <br />
              <span style="color:#f1f2f3"> person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Log </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#678cb1">LogHandler</span>
              <span style="color:#f1f2f3">(fl</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Logger);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> person</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Process();</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> fl</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Close();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
and then:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3a54cef0-5366-4178-84e4-46d49c76fbf4" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">delegate</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> reason);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventRaiser</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> AddHandler(</span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> handler)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> RemoveHandler(</span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> handler)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler </span>
              <span style="color:#e8e2b7">-</span>
              <span style="color:#f1f2f3"> handler;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> DoSomething(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> text)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeEventHandler</span>
              <span style="color:#f1f2f3"> tmp </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> currentHandler;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (tmp</span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#93c763">null</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> tmp</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Invoke(text);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=c097ef51-d45b-4e60-b7f4-1955a6cf3583" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TDD 3 – Manual Mocks and Fakes</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/28/TDD3ManualMocksAndFakes.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,cf75b680-da51-49f1-beab-d754a401fb3c.aspx</id>
    <published>2011-12-27T23:13:14.618-05:00</published>
    <updated>2011-12-27T23:35:17.1805-05:00</updated>
    <category term="TDD" label="TDD" scheme="http://www.programgood.net/CategoryView,category,TDD.aspx" />
    <category term="TekPub" label="TekPub" scheme="http://www.programgood.net/CategoryView,category,TekPub.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Interaction tests.. ie interaction between objects..usually have to replace one of
the objects
</p>
        <p>
source control: 
</p>
        <ul>
          <li>
git init, 
</li>
          <li>
git add . 
</li>
          <li>
git commit –am “initial load” 
</li>
        </ul>
        <p>
going back to simple stuff:
</p>
        <p>
If we have a Fake object and we do Asserts against it, it is a Mock object:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:af562cda-113b-46dd-9063-10bf009188b1" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//interaction
tests!</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_EmptyString_CallsTheLogger()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeLogger</span>
              <span style="color:#f1f2f3"> fakeLog </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeLogger</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3">(fakeLog);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">""</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringAssert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Contains(</span>
              <span style="color:#ec7600">"empty"</span>
              <span style="color:#f1f2f3">,
fakeLog</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WrittenWith);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
poor mans injecting into the constructor a logger
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d9522b6c-a831-4ae0-bd67-39335d328a35" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">ILogger</span>
              <span style="color:#f1f2f3"> logger;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> StringCalculator(</span>
              <span style="color:#8c8cb4">ILogger</span>
              <span style="color:#f1f2f3"> logger)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">logger </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> logger;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> Add(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> LogNumbers(numbers);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (IsEmpty(numbers))</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> DefaultEmptyResult();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> AllOtherValues(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogNumbers(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (IsEmpty(numbers))</span>
              <br />
              <span style="color:#f1f2f3"> logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Write(</span>
              <span style="color:#ec7600">"empty"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3"> logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Write(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">bool</span>
              <span style="color:#f1f2f3"> IsEmpty(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">IsNullOrEmpty(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> AllOtherValues(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Parse(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> DefaultEmptyResult()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
 
</p>
        <h3>Call a WebService if the log is full
</h3>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4d896cf4-bd7b-4ee1-b96c-d9d6a728907a" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1"</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"2"</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"333"</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Logging_SingleNumberAndFirstLoggerIsFull_SecondaryLoggerIsCalled(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> number)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeLogger</span>
              <span style="color:#f1f2f3"> firstLogger </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeLogger</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeLogger</span>
              <span style="color:#f1f2f3"> secondLogger </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">FakeLogger</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> firstLogger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WillThrow </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"out
of space"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3">(firstLogger);</span>
              <br />
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SecondaryLogger </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> secondLogger;</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(number);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//secondaryLogger
is the mock object</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringAssert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Contains(number,
secondLogger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WrittenWith);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
the first test, which then became a testCase.
</p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:91af80a8-6e13-4e07-9719-f290ffc79778" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> Add(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> LogNumbers(numbers);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (IsEmpty(numbers))</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> DefaultEmptyResult();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> AllOtherValues(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> LogNumbers(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">try</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (IsEmpty(numbers))</span>
              <br />
              <span style="color:#f1f2f3"> logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Write(</span>
              <span style="color:#ec7600">"empty"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3"> logger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Write(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">catch</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3"> e)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> SecondaryLogger</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Write(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
nice having logic at same level of abstraction.
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=cf75b680-da51-49f1-beab-d754a401fb3c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TDD Master Class 2 – Code Kata</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/27/TDDMasterClass2CodeKata.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,08670210-7219-4c0c-abdc-9527ba2c09d0.aspx</id>
    <published>2011-12-27T16:50:51.446125-05:00</published>
    <updated>2011-12-27T20:09:09.696125-05:00</updated>
    <category term="kata" label="kata" scheme="http://www.programgood.net/CategoryView,category,kata.aspx" />
    <category term="TDD" label="TDD" scheme="http://www.programgood.net/CategoryView,category,TDD.aspx" />
    <category term="TekPub" label="TekPub" scheme="http://www.programgood.net/CategoryView,category,TekPub.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Code Kata are exercises that you can do
</p>
        <p>
osherove.com/kata
</p>
        <ul>
          <li>
1 method, 1 parameter 
</li>
          <li>
0 or more numbers 
</li>
          <li>
seperated by a comma 
</li>
        </ul>
        <p>
eg var sum = Calculator.Sum(1,3,10);
</p>
        <p>
Alt N for PackageManagerConsole.
</p>
        <p>
Start with simplest test..empty string.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:873d604a-42ee-4e28-b53b-9d7b21cc13be" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculatorTests</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_EmptyString_ReturnsZero()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//start with this
even though StringCalculator doesn't exist yet</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//method doesn't
exist</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">""</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//first kind of syntax</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Assert.AreEqual(0,
result);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//second kind of syntax</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(result, </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EqualTo(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_SingleNumber_ReturnsThatSingleNumber()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">"1"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">,
result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> Add(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
just about to get the 2nd test passing… notice no refactoring yet as only do that
when 2 tests are actually passing!
</p>
        <p>
Just assigned Alt Y to rerun all tests so can keep the cursor in the add method.
</p>
        <p>
Ctrl Alt P – assign parameter
</p>
        <h3>String Calc – first bits
</h3>
        <h3>nCover
</h3>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/TDD-2Code-Kata_FC89/image_thumb1_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb1" border="0" alt="image_thumb1" src="http://www.programgood.net/content/binary/Windows-Live-Writer/TDD-2Code-Kata_FC89/image_thumb1_thumb.png" width="676" height="218" />
          </a>
        </p>
        <p>
100% code coverage at the moment.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4f21e510-6c43-4e19-b23b-8a0fac0bb1e4" class="class">
          <div style="border-bottom: #000080 1px solid; border-left: #000080 1px solid; font-family: 'Courier New', courier, monospace; color: #000; font-size: 10pt; border-top: #000080 1px solid; border-right: #000080 1px solid">
            <div style="padding-bottom: 2px; background-color: #000000; padding-left: 5px; padding-right: 5px; white-space: nowrap; overflow: auto; padding-top: 2px">
              <span style="color: #f1f2f3">[</span>
              <span style="color: #678cb1">TestCase</span>
              <span style="color: #f1f2f3">(</span>
              <span style="color: #ec7600">"1,2"</span>
              <span style="color: #f1f2f3">,</span>
              <span style="color: #ffcd22">3</span>
              <span style="color: #f1f2f3">)]</span>
              <br />
              <span style="color: #f1f2f3">[</span>
              <span style="color: #678cb1">TestCase</span>
              <span style="color: #f1f2f3">(</span>
              <span style="color: #ec7600">"1,3"</span>
              <span style="color: #f1f2f3">,</span>
              <span style="color: #ffcd22">4</span>
              <span style="color: #f1f2f3">)]</span>
              <br />
              <span style="color: #f1f2f3">[</span>
              <span style="color: #678cb1">TestCase</span>
              <span style="color: #f1f2f3">(</span>
              <span style="color: #ec7600">"4,5"</span>
              <span style="color: #f1f2f3">,</span>
              <span style="color: #ffcd22">9</span>
              <span style="color: #f1f2f3">)]</span>
              <br />
              <span style="color: #f1f2f3">[</span>
              <span style="color: #678cb1">TestCase</span>
              <span style="color: #f1f2f3">(</span>
              <span style="color: #ec7600">"14,44"</span>
              <span style="color: #f1f2f3">,</span>
              <span style="color: #ffcd22">58</span>
              <span style="color: #f1f2f3">)]</span>
              <br />
              <span style="color: #f1f2f3">[</span>
              <span style="color: #678cb1">TestCase</span>
              <span style="color: #f1f2f3">(</span>
              <span style="color: #ec7600">"1,2,3"</span>
              <span style="color: #f1f2f3">, </span>
              <span style="color: #ffcd22">6</span>
              <span style="color: #f1f2f3">)]</span>
              <br />
              <span style="color: #f1f2f3">[</span>
              <span style="color: #678cb1">TestCase</span>
              <span style="color: #f1f2f3">(</span>
              <span style="color: #ec7600">"1,2,3,4,5"</span>
              <span style="color: #f1f2f3">, </span>
              <span style="color: #ffcd22">15</span>
              <span style="color: #f1f2f3">)]</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">public</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">void</span>
              <span style="color: #f1f2f3"> Add_MultipleNumbers_ReturnsTheSum(</span>
              <span style="color: #93c763">string</span>
              <span style="color: #f1f2f3"> numbers, </span>
              <span style="color: #93c763">int</span>
              <span style="color: #f1f2f3"> expected)</span>
              <br />
              <span style="color: #f1f2f3">{</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #678cb1">StringCalculator</span>
              <span style="color: #f1f2f3"> sc </span>
              <span style="color: #e8e2b7">=</span>
              <span style="color: #f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">int</span>
              <span style="color: #f1f2f3"> result </span>
              <span style="color: #e8e2b7">=</span>
              <span style="color: #f1f2f3"> sc</span>
              <span style="color: #e8e2b7">.</span>
              <span style="color: #f1f2f3">Add(numbers);</span>
              <br />
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #678cb1">Assert</span>
              <span style="color: #e8e2b7">.</span>
              <span style="color: #f1f2f3">AreEqual(expected,
result);</span>
              <br />
              <span style="color: #f1f2f3">}</span>
              <br />
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">private</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">static</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #678cb1">StringCalculator</span>
              <span style="color: #f1f2f3"> MakeCalc()</span>
              <br />
              <span style="color: #f1f2f3">{</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">return</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">new</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #678cb1">StringCalculator</span>
              <span style="color: #f1f2f3">();</span>
              <br />
              <span style="color: #f1f2f3">}</span>
              <br />
              <span style="color: #f1f2f3">}</span>
              <br />
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">public</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">class</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #678cb1">StringCalculator</span>
              <br />
              <span style="color: #f1f2f3">{</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">public</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">int</span>
              <span style="color: #f1f2f3"> Add(</span>
              <span style="color: #93c763">string</span>
              <span style="color: #f1f2f3"> numbers)</span>
              <br />
              <span style="color: #f1f2f3">{</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">if</span>
              <span style="color: #f1f2f3"> (numbers</span>
              <span style="color: #e8e2b7">.</span>
              <span style="color: #f1f2f3">Length </span>
              <span style="color: #e8e2b7">==</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #ffcd22">0</span>
              <span style="color: #f1f2f3">)</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">return</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #ffcd22">0</span>
              <span style="color: #f1f2f3">;</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">if</span>
              <span style="color: #f1f2f3"> (numbers</span>
              <span style="color: #e8e2b7">.</span>
              <span style="color: #f1f2f3">Length </span>
              <span style="color: #e8e2b7">==</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #ffcd22">1</span>
              <span style="color: #f1f2f3">)</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">return</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">int</span>
              <span style="color: #e8e2b7">.</span>
              <span style="color: #f1f2f3">Parse(numbers);</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">var</span>
              <span style="color: #f1f2f3"> listOfNumbers </span>
              <span style="color: #e8e2b7">=</span>
              <span style="color: #f1f2f3"> numbers</span>
              <span style="color: #e8e2b7">.</span>
              <span style="color: #f1f2f3">Split(</span>
              <span style="color: #ec7600">','</span>
              <span style="color: #f1f2f3">);</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">int</span>
              <span style="color: #f1f2f3"> sumOfNumbers </span>
              <span style="color: #e8e2b7">=</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #ffcd22">0</span>
              <span style="color: #f1f2f3">;</span>
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">foreach</span>
              <span style="color: #f1f2f3"> (</span>
              <span style="color: #93c763">var</span>
              <span style="color: #f1f2f3"> number </span>
              <span style="color: #93c763">in</span>
              <span style="color: #f1f2f3"> listOfNumbers)</span>
              <br />
              <span style="color: #f1f2f3">sumOfNumbers </span>
              <span style="color: #e8e2b7">+=</span>
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">int</span>
              <span style="color: #e8e2b7">.</span>
              <span style="color: #f1f2f3">Parse(number);</span>
              <br />
              <br />
              <span style="color: #f1f2f3">
              </span>
              <span style="color: #93c763">return</span>
              <span style="color: #f1f2f3"> sumOfNumbers;</span>
              <br />
              <br />
              <span style="color: #f1f2f3">}</span>
              <br />
              <span style="color: #f1f2f3">}</span>
            </div>
          </div>
        </div>
        <p>
first shot at getting multiple numbers being summed together
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3164eeb0-1a40-4e9f-9307-ea4df8c4b242" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculatorTests</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> MakeCalc()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_EmptyString_ReturnsZero()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//start with this
even though StringCalculator doesn't exist yet</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//method doesn't
exist</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">""</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//first kind of syntax</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Assert.AreEqual(0,
result);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//second kind of syntax</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(result, </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EqualTo(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1"</span>
              <span style="color:#f1f2f3">,</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"2"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_SingleNumber_ReturnsThatSingleNumber(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers, </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> expected)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(numbers);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(expected,
result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1,2"</span>
              <span style="color:#f1f2f3">,</span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1,3"</span>
              <span style="color:#f1f2f3">,</span>
              <span style="color:#ffcd22">4</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"4,5"</span>
              <span style="color:#f1f2f3">,</span>
              <span style="color:#ffcd22">9</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"14,44"</span>
              <span style="color:#f1f2f3">,</span>
              <span style="color:#ffcd22">58</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1,2,3"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">6</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1,2,3,4,5"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">15</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_MultipleNumbers_ReturnsTheSum(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers, </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> expected)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(numbers);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(expected,
result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_TwoNumbersWithLineFeedDelimeter_ReturnsTheSum()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">"1\n2"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">,
result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1\n3"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">4</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1\n2\n3"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">6</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"1\n222\n3\n20"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">246</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_MultipleNumbersWithLineFeedDelimeter_ReturnsTheSum(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers, </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> expected)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(numbers);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(expected,
result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_TwoNumbersWithGeneralDelimeter_ReturnsTheSum()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">"//;\n1;2"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">,
result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"//;\n1;2"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"//;\n1;2;3"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">6</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"//;\n1;2;3;20"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">26</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"//x\n1x2x3x20"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">26</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_MultipleNumbersWithGeneralDelimeter_ReturnsTheSum(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers, </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> expected)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(numbers);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(expected,
result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_NegativeNumber_ThrowsCorrectExceptionWithNegativeNumber()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3"> exception </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Throws</span>
              <span style="color:#e8e2b7">&lt;</span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">delegate</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">"-1"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> });</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ec7600">"Negatives
not allowed: -1"</span>
              <span style="color:#f1f2f3">, exception</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_MultipleNegativeNumbers_ThrowsAnExceptionWithAllNegativeNumbers()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3"> exception </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Throws</span>
              <span style="color:#e8e2b7">&lt;</span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">delegate</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ec7600">"-1,-2"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> });</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ec7600">"Negatives
not allowed: -1, -2"</span>
              <span style="color:#f1f2f3">, exception</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"-1,-2"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"-1,
-2"</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"-1,-2,-3"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"-1,
-2, -3"</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"-1,2,-3"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"-1,
-3"</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_MixedMultipleNegativeAndPositiveNumbers_ThrowsAnExceptionWithAllNegativeNumbers(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers, </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> expected)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <span style="color:#f1f2f3"> sc </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> MakeCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3"> exception </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Throws</span>
              <span style="color:#e8e2b7">&lt;</span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">delegate</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> sc</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(numbers);</span>
              <br />
              <span style="color:#f1f2f3"> });</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ec7600">"Negatives
not allowed: "</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> expected,
exception</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Message);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringCalculator</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> Add(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> numbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> delimeter;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Contains(</span>
              <span style="color:#ec7600">"//"</span>
              <span style="color:#f1f2f3">))</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> delimeter </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Substring(</span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> numbers </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Substring(</span>
              <span style="color:#ffcd22">4</span>
              <span style="color:#f1f2f3">,
numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Length</span>
              <span style="color:#e8e2b7">-</span>
              <span style="color:#ffcd22">4</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> numbers </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Replace(delimeter, </span>
              <span style="color:#ec7600">","</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Contains(</span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">))</span>
              <br />
              <span style="color:#f1f2f3"> numbers </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Replace(</span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">","</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Length </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Length </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Parse(numbers);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Length </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Parse(numbers);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (i </span>
              <span style="color:#e8e2b7">&lt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">throw</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ec7600">"Negatives
not allowed: "</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> i</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> i;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
listOfNumbers </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> numbers</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Split(</span>
              <span style="color:#ec7600">','</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> errorMesssage </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Negatives
not allowed: "</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">bool</span>
              <span style="color:#f1f2f3"> showErrorMessage </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">false</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">foreach</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> number </span>
              <span style="color:#93c763">in</span>
              <span style="color:#f1f2f3"> listOfNumbers)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Parse(number);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (i </span>
              <span style="color:#e8e2b7">&lt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> errorMesssage </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> i</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">",
"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> showErrorMessage </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">true</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//get rid of final
comma and space</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (showErrorMessage)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> errorMesssage </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> errorMesssage</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Substring(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
errorMesssage</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Length </span>
              <span style="color:#e8e2b7">-</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">throw</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#f1f2f3">(errorMesssage);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> sumOfNumbers </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">foreach</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> number </span>
              <span style="color:#93c763">in</span>
              <span style="color:#f1f2f3"> listOfNumbers)</span>
              <br />
              <span style="color:#f1f2f3"> sumOfNumbers </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Parse(number);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> sumOfNumbers;</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
first show at just getting tests to pass.
</p>
        <p>
Started refactorugb with help from videos on: <a href="http://osherove.com/tdd-kata-1/">http://osherove.com/tdd-kata-1/</a></p>
        <p>
linq, extension methods, make more readable using methods
</p>
        <p>
          <a href="http://vimeo.com/27977192">http://vimeo.com/27977192</a>
        </p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=08670210-7219-4c0c-abdc-9527ba2c09d0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>C# Names</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/27/CNames.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,d564eef5-441c-4560-82eb-0436912a5e41.aspx</id>
    <published>2011-12-26T23:07:14.7759743-05:00</published>
    <updated>2011-12-26T23:07:14.7759743-05:00</updated>
    <category term="c# language" label="c# language" scheme="http://www.programgood.net/CategoryView,category,cLanguage.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
variables or local variables – declared inside methods
</p>
        <p>
fields – variable (public or private) that is a member of a class
</p>
        <p>
property – has a getter or setter
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=d564eef5-441c-4560-82eb-0436912a5e41" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TDD Master Class 1 – Roy Osherove</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/27/TDDMasterClass1RoyOsherove.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,404d0417-df4d-4583-a39e-b4641d980745.aspx</id>
    <published>2011-12-26T21:17:53.433241-05:00</published>
    <updated>2011-12-27T16:50:36.618-05:00</updated>
    <category term="TDD" label="TDD" scheme="http://www.programgood.net/CategoryView,category,TDD.aspx" />
    <category term="TekPub" label="TekPub" scheme="http://www.programgood.net/CategoryView,category,TekPub.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
From tekpub.com
</p>
        <p>
Unit Tests – “.. a test of a small functional piece of code”
</p>
        <blockquote>
          <p>
run in memory (not db!).. all under our control…always expect unit tests to pass
</p>
          <p>
ie not integration test.. which has dependencies.
</p>
          <p>
 
</p>
        </blockquote>
        <p>
Creating a new blank solution (actually called it MyProduct)
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_thumb.png" width="584" height="484" />
          </a>
        </p>
        <p>
then create a class library called MyProduct.Logic
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_thumb_1.png" width="644" height="323" />
          </a>
        </p>
        <p>
downloaded Resharper.
</p>
        <p>
Alt Enter to get rid of usings
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_thumb_2.png" width="244" height="229" />
          </a>
        </p>
        <p>
setting up a separate project for UnitTests (and further down the line, integration
tests).
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_8.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_thumb_3.png" width="244" height="144" />
          </a>
        </p>
        <p>
installing unit via nuget console window. (Alt t n o)
</p>
        <p>
Don’t need punit or the mock dlls.  So just nunit.framework.
</p>
        <p>
 
</p>
        <p>
tests – don’t test math forumulae.  Just logic.
</p>
        <h3>Test Naming
</h3>
        <p>
whats being tested:  Add 
</p>
        <p>
scenario:  TwoNumbers
</p>
        <p>
expected behaviour
</p>
        <p>
eg Add_TwoNumbers_ReturnsTheSum
</p>
        <p>
Test Lint – tells you if no asserts.  Logic in tests eg 1+2   Assert.AreEqual(1+2,
result)
</p>
        <p>
 
</p>
        <h3>TestDriven.NET
</h3>
        <p>
Tools Options Keyboard
</p>
        <p>
he uses alt R to rerun tests ( I use Alt T, and Alt D for debug)
</p>
        <h3>Refactoring
</h3>
        <p>
refactor out constructor stuff when &gt; 2 tests
</p>
        <p>
put initialisation in setup – but this can be confusing when looking at a test way
down the page.. so refactor to factory
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:fdcd513d-91ba-415f-8079-9ea94cdd8d14" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyCalculatorTests</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_TwoNumbers_ReturnsTheSum()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyCalculator</span>
              <span style="color:#f1f2f3"> c </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> GetNewCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> c</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">,
result);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyCalculator</span>
              <span style="color:#f1f2f3"> GetNewCalc()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyCalculator</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
static factory.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_10.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/TDDRoy_9956/image_thumb_4.png" width="644" height="365" />
          </a>
        </p>
        <p>
but attribute hmmm.. GetNewCalc could throw and exception.
</p>
        <p>
Use Assert.Throws.
</p>
        <h3>Delegates and Lambda expressions
</h3>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:65eb25ae-2ac3-475a-87bb-ef80cc426355" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//[ExpectedException(typeof(Exception))]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Add_FirstParamNegative_Throw()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyCalculator</span>
              <span style="color:#f1f2f3"> c </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> GetNewCalc();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> ANY_POSITIVE </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//c.Add(-1, ANY_POSITIVE);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//parameter is a delegate
to a method here</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//but would have same
problem as putting in an attribute</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//ie wouldn't
know that GetNewCalc didn't fire an exception</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//any line of Code
could throw an exception</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Assert.Throws&lt;Exception&gt;(Code);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//anonymous delegate
or anonymous method</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//even though its
in the scope on an anon method</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//it knows about c</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Throws</span>
              <span style="color:#e8e2b7">&lt;</span>
              <span style="color:#678cb1">Exception</span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">delegate</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> c</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Add(</span>
              <span style="color:#e8e2b7">-</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">,
ANY_POSITIVE);</span>
              <br />
              <span style="color:#f1f2f3"> });</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//lambda expression
- shorter delegate notation</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//method doesn't
have any name.</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//after =&gt; body
of method only has one line</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Assert.Throws&lt;Exception&gt;(()
=&gt; c.Add(-1, ANY_POSITIVE));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d874e296-cc25-44f7-8d9b-b2e298d7dae6" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Code()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//c.Add(-1, ANY_POSITIVE);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
he prefers the delegate way – things more  readable than lambda
</p>
        <h3>TDD and Learning new things
</h3>
        <ul>
          <li>
Copy 
</li>
          <li>
Why 
</li>
          <li>
Improvise..eg make own naming convention 
</li>
        </ul>
        <p>
Start with a failing test
</p>
        <p>
Make test pass – make code as dumb and simple as possible.  Not generic. 
Better tests.. better code coverage…how would 11 year old solve it?
</p>
        <p>
Refactor – changing existing code without changing functionality
</p>
        <p>
So, writing the test first for second param being negative throwing:
</p>
        <p>
 
</p>
        <h3>New Feature – Calculator Remembers Last Result
</h3>
        <p>
Doing the test first.. so can see that the field / property  c.LastResult doesn’t
exist yet!
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8c0a65de-70bd-4a2e-909c-c93de794eb66" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> ResultMemory_CallingAdd_ResultIsSavedForLater()</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyCalculator</span>
              <span style="color:#f1f2f3"> c </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> GetNewCalc();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> c</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AddPositives(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">,
c</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#ff0000">LastResult</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
easiest way to make the test pass:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f20f23b0-b975-4c47-8481-fb2afe41d0b0" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//a
backing field</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> _lastResult;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//property (not an
auto property)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> LastResult</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">get</span>
              <span style="color:#f1f2f3"> { </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">;
}</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">set</span>
              <span style="color:#f1f2f3"> {
_lastResult </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">value</span>
              <span style="color:#f1f2f3">;
}</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <h3>TestCase – parameterised
</h3>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9464aa99-903f-40fc-98d5-4e3a8bf1734a" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">[</span>
              <span style="color:#678cb1">TestCase</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">,</span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">,</span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">)]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> ResultMemory_CallingAdd_ResultIsSavedForLater(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> a, </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> b, </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> expected)</span>
              <br />
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">MyCalculator</span>
              <span style="color:#f1f2f3"> c </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> GetNewCalc();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> c</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AddPositives(a,
b);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(expected,
c</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">LastResult);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=404d0417-df4d-4583-a39e-b4641d980745" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Resharper Keyboard Shortcuts</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/27/ResharperKeyboardShortcuts.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,dac9d0e0-c182-42db-8380-bbc64a2ab682.aspx</id>
    <published>2011-12-26T21:15:24.4833494-05:00</published>
    <updated>2011-12-27T23:13:02.46175-05:00</updated>
    <category term="Keyboard Shortcuts" label="Keyboard Shortcuts" scheme="http://www.programgood.net/CategoryView,category,KeyboardShortcuts.aspx" />
    <category term="Resharper" label="Resharper" scheme="http://www.programgood.net/CategoryView,category,Resharper.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Alt Enter – get rid of usings, introduce variable
</p>
        <p>
Ctrl R Ctrl R – Rename
</p>
        <p>
Ctrl Alt Space – If have a reference but don’t have a using yet
</p>
        <p>
Naming convention warning:  Alt Enter, Inspection Options, Hint (gets rid of
blue squiggly) eg for   Add_TwoNumbers_ReturnsTheSum()
</p>
        <blockquote>
          <p>
Introduce var.. turn off.
</p>
        </blockquote>
        <p>
Ctrl R, Ctrl M  - Extract Method   eg MyCalculator c = <font style="background-color: #9bbb59">new
MyCalculator()</font>;  highlight green bit, then Ctrl R, Ctrl M.  extract
as a static method.  Factory.
</p>
        <p>
Resharper Snippets
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Resharper-Keyboard-Shortcuts_9D2F/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Resharper-Keyboard-Shortcuts_9D2F/image_thumb_1.png" width="640" height="507" />
          </a>
        </p>
        <p>
test tab will then do this.  $xxx$ are dynamic, and $END$ is where cursor will
end up.
</p>
        <p>
Ctrl E, Ctrl U – Surround with eg Try Catch
</p>
        <p>
Ctrl E, Ctrl C – Cleanup code.. VS is Ctrl K, Ctrl D
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Resharper-Keyboard-Shortcuts_9D2F/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Resharper-Keyboard-Shortcuts_9D2F/image_thumb_2.png" width="745" height="433" />
          </a>
        </p>
        <p>
Ctrl R, Ctrl P – Introduce parameter
</p>
        <p>
Ctrl D – Duplicate
</p>
        <p>
Ctrl R O – Move to Folder
</p>
        <p>
Ctrl x – without highlighting will cut a line
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=dac9d0e0-c182-42db-8380-bbc64a2ab682" />
      </div>
    </content>
  </entry>
  <entry>
    <title>iTunes Removing Dead Tracks and Duplicates–Responsive WinForms</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/22/iTunesRemovingDeadTracksAndDuplicatesResponsiveWinForms.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,3128d7df-555b-4a58-93e2-f0404cc51ff6.aspx</id>
    <published>2011-12-21T21:42:35.113125-05:00</published>
    <updated>2011-12-21T22:04:51.863125-05:00</updated>
    <category term="iTunes" label="iTunes" scheme="http://www.programgood.net/CategoryView,category,iTunes.aspx" />
    <category term="Open Source" label="Open Source" scheme="http://www.programgood.net/CategoryView,category,OpenSource.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In my exploration of Open Source projects of interest I came across this one.
</p>
        <p>
          <a href="http://www.hanselman.com/blog/RemovingDeadTracksDuplicatesThatDontExistFromITunesUsingC.aspx">http://www.hanselman.com/blog/RemovingDeadTracksDuplicatesThatDontExistFromITunesUsingC.aspx</a>
        </p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/12993fa613fa_C9B8/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/12993fa613fa_C9B8/image_thumb.png" width="767" height="592" />
          </a>
        </p>
        <p>
So I think iTunes actually does find duplicates now <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.programgood.net/content/binary/Windows-Live-Writer/12993fa613fa_C9B8/wlEmoticon-smile_2.png" /> 
.. but interesting code:
</p>
        <pre class="csharpcode">
          <span class="kwrd">public</span>
          <span class="kwrd">partial</span>
          <span class="kwrd">class</span> Form1
: Form { <span class="kwrd">private</span><span class="kwrd">volatile</span><span class="kwrd">bool</span> _shouldStop;</pre>
        <pre class="csharpcode">“Volatile: Over-simplifying and paraphrasing:<br />
volatile indicates that every read operation needs to re-read from memory because
there might be other threads updating the variable.”</pre>
        <pre class="csharpcode">
          <a href="http://stackoverflow.com/questions/1186515/interlocked-and-volatile">http://stackoverflow.com/questions/1186515/interlocked-and-volatile</a>
        </pre>
        <pre class="csharpcode">Maybe dropped in .NET5? <a href="http://www.bluebytesoftware.com/blog/2010/12/04/SayonaraVolatile.aspx">http://www.bluebytesoftware.com/blog/2010/12/04/SayonaraVolatile.aspx</a></pre>
        <h3>Architecture
</h3>
        <p>
All in code behind the winform.
</p>
        <p>
ListView with columns
</p>
        <p>
Label1 and a Progress Bar.
</p>
        <p>
checkBoxRemove
</p>
        <h3> 
</h3>
        <p>
Worker is on a different thread to the UI. and is spun up when the button is pressed:
</p>
        <pre class="csharpcode">
          <span class="rem">//button1 is find dead tracks</span>
          <span class="kwrd">private</span>
          <span class="kwrd">void</span> button1_Click(<span class="kwrd">object</span> sender,
EventArgs e) { <span class="kwrd">this</span>._shouldStop = <span class="kwrd">false</span>; <span class="kwrd">this</span>.buttonCancel.Enabled
= <span class="kwrd">true</span>; <span class="kwrd">this</span>.listView1.Items.Clear(); <span class="kwrd">this</span>.worker
= <span class="kwrd">new</span> Thread(<span class="kwrd">this</span>.FindDeadTracks); <span class="kwrd">this</span>.worker.Start();
}</pre>
        <pre class="csharpcode"> </pre>
        <h3>Helper methods for FindDeadTracks and RemoveDuplicates
</h3>
        <p>
SetupProgress(max value eg trackcount) – this sets up the ProgressBar (we’re on the
worker thread so have to invoke back to UI).. which magically calls the SetupProgress
again and sets the max value of the progress bar
</p>
        <p>
in FindDeadTracks (worker thread)
</p>
        <pre class="csharpcode">
          <span class="rem">//setup the progress control</span>
          <span class="kwrd">this</span>.SetupProgress(trackCount);</pre>
        <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
          <span class="kwrd">then in class level</span>
        </p>
        <pre class="csharpcode">
          <span class="kwrd">delegate</span>
          <span class="kwrd">void</span> SetupProgressCallback(<span class="kwrd">int</span> max);</pre>
        <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <pre class="csharpcode">
          <span class="kwrd">private</span>
          <span class="kwrd">void</span> SetupProgress(<span class="kwrd">int</span> max)
{ <span class="kwrd">if</span> (<span class="kwrd">this</span>.progressBar1.InvokeRequired)
{ SetupProgressCallback cb = <span class="kwrd">new</span> SetupProgressCallback(SetupProgress); <span class="kwrd">this</span>.Invoke(cb, <span class="kwrd">new</span><span class="kwrd">object</span>[]
{ max }); } <span class="kwrd">else</span> { <span class="kwrd">this</span>.progressBar1.Maximum
= max; <span class="kwrd">this</span>.progressBar1.Minimum = 1; <span class="kwrd">this</span>.progressBar1.Step
= 1; <span class="kwrd">this</span>.progressBar1.Value = 1; } }</pre>
        <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
nifty!  worker thread calls it first, which it then goes into the InvokeRequired
section.  Then the delegate calls it.
</p>
        <p>
 
</p>
        <p>
IncrementProgress – both worker methods can call this (its already been setup). 
Same as above.. just increments a step
</p>
        <p>
UpdateLabel – updates label1
</p>
        <h3>FindDeadTrack
</h3>
        <p>
goes through and looks for an empty filename or an exception on System.File.IO.Exists
</p>
        <h3>Remove Duplicates
</h3>
        <p>
Dictionary for trackCollection.  where key string could be:  FarewellYngwie
MalmsteenRising Force    notice there are spaces
</p>
        <pre class="csharpcode">var trackCollection = <span class="kwrd">new</span> Dictionary&lt;<span class="kwrd">string</span>,
IITTrack&gt;();</pre>
        <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
The app will never add duplicates into the trackCollection
</p>
        <p>
ArrayList for tracksToRemove
</p>
        <p>
          <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
          <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
          <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        </p>
        <pre class="code">
          <span style="color: blue">using </span>System; <span style="color: blue">using </span>System.Collections.Generic; <span style="color: blue">using </span>System.ComponentModel; <span style="color: blue">using </span>System.Data; <span style="color: blue">using </span>System.Drawing; <span style="color: blue">using </span>System.Linq; <span style="color: blue">using </span>System.Text; <span style="color: blue">using </span>System.Threading; <span style="color: blue">using </span>System.Windows.Forms; <span style="color: blue">using </span>System.Collections; <span style="color: blue">using </span>iTunesLib; <span style="color: blue">namespace </span>iTunesCOMSample
{ <span style="color: blue">public partial class </span><span style="color: #2b91af">Form1 </span>: <span style="color: #2b91af">Form </span>{ <span style="color: blue">private
volatile bool </span>_shouldStop; <span style="color: blue">private </span><span style="color: #2b91af">Thread </span>worker; <span style="color: blue">public </span>Form1()
{ InitializeComponent(); } <span style="color: blue">private void </span>Form1_Load(<span style="color: blue">object </span>sender, <span style="color: #2b91af">EventArgs </span>e)
{ <span style="color: blue">this</span>.label1.Text = <span style="color: #a31515">""</span>; <span style="color: blue">this</span>.buttonCancel.Enabled
= <span style="color: blue">false</span>; } <span style="color: blue">private void </span>RemoveDuplicates()
{ <span style="color: green">//create a reference to iTunes </span><span style="color: blue">var </span>iTunes
= <span style="color: blue">new </span><span style="color: #2b91af">iTunesAppClass</span>(); <span style="color: green">//get
a reference to the collection of all tracks </span><span style="color: #2b91af">IITTrackCollection </span>tracks
= iTunes.LibraryPlaylist.Tracks; <span style="color: blue">int </span>trackCount =
tracks.Count; <span style="color: blue">int </span>numberChecked = 0; <span style="color: blue">int </span>numberDuplicateFound
= 0; <span style="color: green">//dictionary is key,value </span><span style="color: blue">var </span>trackCollection
= <span style="color: blue">new </span><span style="color: #2b91af">Dictionary</span>&lt;<span style="color: blue">string</span>, <span style="color: #2b91af">IITTrack</span>&gt;(); <span style="color: blue">var </span>tracksToRemove
= <span style="color: blue">new </span><span style="color: #2b91af">ArrayList</span>(); <span style="color: green">//setup
the progress control </span><span style="color: blue">this</span>.SetupProgress(trackCount); <span style="color: blue">for </span>(<span style="color: blue">int </span>i
= trackCount; i &gt; 0; i--) { <span style="color: blue">if </span>(tracks[i].Kind
== <span style="color: #2b91af">ITTrackKind</span>.ITTrackKindFile) { <span style="color: blue">if </span>(!<span style="color: blue">this</span>._shouldStop)
{ numberChecked++; <span style="color: blue">this</span>.IncrementProgress(); <span style="color: blue">this</span>.UpdateLabel(<span style="color: #a31515">"Checking
track # " </span>+ numberChecked.ToString() + <span style="color: #a31515">"
- " </span>+ tracks[i].Name); <span style="color: green">//eg key: FarewellYngwie
MalmsteenRising Force" notice there are spaces </span><span style="color: blue">string </span>trackKey
= tracks[i].Name + tracks[i].Artist + tracks[i].Album; <span style="color: blue">if </span>(!trackCollection.ContainsKey(trackKey))
trackCollection.Add(trackKey, tracks[i]); <span style="color: blue">else </span><span style="color: green">//if
the trackCollection does have this song already </span>{ <span style="color: green">//if
not in the same album or not by the same artist? </span><span style="color: blue">if </span>(trackCollection[trackKey].Album
!= tracks[i].Album || trackCollection[trackKey].Artist != tracks[i].Artist) trackCollection.Add(trackKey,
tracks[i]); <span style="color: green">//if track in collection has a higherbitrate
than current </span><span style="color: blue">else if </span>(trackCollection[trackKey].BitRate
&gt; tracks[i].BitRate) { <span style="color: #2b91af">IITFileOrCDTrack </span>fileTrack
= (<span style="color: #2b91af">IITFileOrCDTrack</span>)tracks[i]; numberDuplicateFound++;
tracksToRemove.Add(tracks[i]); } <span style="color: green">//bitrate is higher in
this one so replace the one in trackCollection with this version. //default just replace
the existing track with this one </span><span style="color: blue">else </span>{ <span style="color: #2b91af">IITFileOrCDTrack </span>fileTrack
= (<span style="color: #2b91af">IITFileOrCDTrack</span>)tracks[i]; trackCollection[trackKey]
= fileTrack; numberDuplicateFound++; tracksToRemove.Add(tracks[i]); } } } } } <span style="color: blue">this</span>.SetupProgress(tracksToRemove.Count); <span style="color: green">//tracksToRemove
is an ArrayList </span><span style="color: blue">for </span>(<span style="color: blue">int </span>i
= 0; i &lt; tracksToRemove.Count; i++) { <span style="color: #2b91af">IITFileOrCDTrack </span>track
= (<span style="color: #2b91af">IITFileOrCDTrack</span>)tracksToRemove[i]; <span style="color: blue">this</span>.UpdateLabel(<span style="color: #a31515">"Removing
" </span>+ track.Name); <span style="color: blue">this</span>.IncrementProgress(); <span style="color: blue">this</span>.AddTrackToList((<span style="color: #2b91af">IITFileOrCDTrack</span>)tracksToRemove[i]); <span style="color: blue">if </span>(<span style="color: blue">this</span>.checkBoxRemove.Checked)
track.Delete(); } <span style="color: blue">this</span>.UpdateLabel(<span style="color: #a31515">"Checked
" </span>+ numberChecked.ToString() + <span style="color: #a31515">" tracks
and " </span>+ numberDuplicateFound.ToString() + <span style="color: #a31515">"
duplicate tracks found."</span>); <span style="color: blue">this</span>.SetupProgress(1);
} <span style="color: blue">private void </span>FindDeadTracks() { <span style="color: green">//create
a reference to iTunes </span><span style="color: #2b91af">iTunesAppClass </span>iTunes
= <span style="color: blue">new </span><span style="color: #2b91af">iTunesAppClass</span>(); <span style="color: green">//get
a reference to the collection of all tracks </span><span style="color: #2b91af">IITTrackCollection </span>tracks
= iTunes.LibraryPlaylist.Tracks; <span style="color: blue">int </span>trackCount =
tracks.Count; <span style="color: blue">int </span>numberChecked = 0; <span style="color: blue">int </span>numberDeadFound
= 0; <span style="color: green">//setup the progress control </span><span style="color: blue">this</span>.SetupProgress(trackCount); <span style="color: blue">for </span>(<span style="color: blue">int </span>i
= trackCount; i &gt; 0; i--) { <span style="color: blue">if </span>(!<span style="color: blue">this</span>._shouldStop)
{ <span style="color: #2b91af">IITTrack </span>track = tracks[i]; numberChecked++; <span style="color: blue">this</span>.IncrementProgress(); <span style="color: blue">this</span>.UpdateLabel(<span style="color: #a31515">"Checking
track # " </span>+ numberChecked.ToString() + <span style="color: #a31515">"
- " </span>+ track.Name); <span style="color: blue">if </span>(track.Kind == <span style="color: #2b91af">ITTrackKind</span>.ITTrackKindFile)
{ <span style="color: #2b91af">IITFileOrCDTrack </span>fileTrack = (<span style="color: #2b91af">IITFileOrCDTrack</span>)track; <span style="color: green">//if
the file doesn't exist, we'll delete it from iTunes </span><span style="color: blue">if </span>(fileTrack.Location
== <span style="color: #2b91af">String</span>.Empty) { numberDeadFound++; <span style="color: blue">this</span>.AddTrackToList(fileTrack); <span style="color: blue">if </span>(<span style="color: blue">this</span>.checkBoxRemove.Checked)
fileTrack.Delete(); } <span style="color: blue">else if </span>(!System.IO.<span style="color: #2b91af">File</span>.Exists(fileTrack.Location))
{ numberDeadFound++; <span style="color: blue">this</span>.AddTrackToList(fileTrack); <span style="color: blue">if </span>(<span style="color: blue">this</span>.checkBoxRemove.Checked)
fileTrack.Delete(); } } } } <span style="color: blue">this</span>.UpdateLabel(<span style="color: #a31515">"Checked
" </span>+ numberChecked.ToString() + <span style="color: #a31515">" tracks
and " </span>+ numberDeadFound.ToString() + <span style="color: #a31515">"
dead tracks found."</span>); <span style="color: green">//sets the progressbar
back to nothing </span><span style="color: blue">this</span>.SetupProgress(1); } <span style="color: blue">#region </span>Button
clicks <span style="color: blue">private void </span>buttonCancel_Click(<span style="color: blue">object </span>sender, <span style="color: #2b91af">EventArgs </span>e)
{ <span style="color: blue">this</span>._shouldStop = <span style="color: blue">true</span>; <span style="color: blue">this</span>.buttonCancel.Enabled
= <span style="color: blue">false</span>; } <span style="color: green">//button1 is
find dead tracks </span><span style="color: blue">private void </span>button1_Click(<span style="color: blue">object </span>sender, <span style="color: #2b91af">EventArgs </span>e)
{ <span style="color: blue">this</span>._shouldStop = <span style="color: blue">false</span>; <span style="color: blue">this</span>.buttonCancel.Enabled
= <span style="color: blue">true</span>; <span style="color: blue">this</span>.listView1.Items.Clear(); <span style="color: blue">this</span>.worker
= <span style="color: blue">new </span><span style="color: #2b91af">Thread</span>(<span style="color: blue">this</span>.FindDeadTracks); <span style="color: blue">this</span>.worker.Start();
} <span style="color: green">//button2 is duplicates </span><span style="color: blue">private
void </span>button2_Click(<span style="color: blue">object </span>sender, <span style="color: #2b91af">EventArgs </span>e)
{ <span style="color: blue">this</span>._shouldStop = <span style="color: blue">false</span>; <span style="color: blue">this</span>.buttonCancel.Enabled
= <span style="color: blue">true</span>; <span style="color: blue">this</span>.listView1.Items.Clear(); <span style="color: blue">this</span>.worker
= <span style="color: blue">new </span><span style="color: #2b91af">Thread</span>(<span style="color: blue">this</span>.RemoveDuplicates); <span style="color: blue">this</span>.worker.Start();
} <span style="color: blue">#endregion #region </span>Delegate Callbacks <span style="color: green">//delagates
for thread-safe access to UI components </span><span style="color: blue">delegate
void </span><span style="color: #2b91af">SetupProgressCallback</span>(<span style="color: blue">int </span>max); <span style="color: blue">delegate
void </span><span style="color: #2b91af">IncrementProgressCallback</span>(); <span style="color: blue">delegate
void </span><span style="color: #2b91af">UpdateLabelCallback</span>(<span style="color: blue">string </span>text); <span style="color: blue">delegate
void </span><span style="color: #2b91af">CompleteOperationCallback</span>(<span style="color: blue">string </span>message); <span style="color: blue">delegate
void </span><span style="color: #2b91af">AddTrackToListCallback</span>(<span style="color: #2b91af">IITFileOrCDTrack </span>fileTrack); <span style="color: blue">private
void </span>IncrementProgress() { <span style="color: blue">if </span>(<span style="color: blue">this</span>.progressBar1.InvokeRequired)
{ <span style="color: #2b91af">IncrementProgressCallback </span>cb = <span style="color: blue">new </span><span style="color: #2b91af">IncrementProgressCallback</span>(IncrementProgress); <span style="color: blue">this</span>.Invoke(cb, <span style="color: blue">new
object</span>[] { }); } <span style="color: blue">else </span>{ <span style="color: blue">this</span>.progressBar1.PerformStep();
} } <span style="color: blue">private void </span>UpdateLabel(<span style="color: blue">string </span>text)
{ <span style="color: blue">if </span>(<span style="color: blue">this</span>.label1.InvokeRequired)
{ <span style="color: #2b91af">UpdateLabelCallback </span>cb = <span style="color: blue">new </span><span style="color: #2b91af">UpdateLabelCallback</span>(UpdateLabel); <span style="color: blue">this</span>.Invoke(cb, <span style="color: blue">new
object</span>[] { text }); } <span style="color: blue">else </span>{ <span style="color: blue">this</span>.label1.Text
= text; } } <span style="color: blue">private void </span>CompleteOperation(<span style="color: blue">string </span>message)
{ <span style="color: blue">if </span>(<span style="color: blue">this</span>.label1.InvokeRequired)
{ <span style="color: #2b91af">CompleteOperationCallback </span>cb = <span style="color: blue">new </span><span style="color: #2b91af">CompleteOperationCallback</span>(CompleteOperation); <span style="color: blue">this</span>.Invoke(cb, <span style="color: blue">new
object</span>[] { message }); } <span style="color: blue">else </span>{ <span style="color: blue">this</span>.label1.Text
= message; } } <span style="color: blue">private void </span>AddTrackToList(<span style="color: #2b91af">IITFileOrCDTrack </span>fileTrack)
{ <span style="color: blue">if </span>(<span style="color: blue">this</span>.listView1.InvokeRequired)
{ <span style="color: #2b91af">AddTrackToListCallback </span>cb = <span style="color: blue">new </span><span style="color: #2b91af">AddTrackToListCallback</span>(AddTrackToList); <span style="color: blue">this</span>.Invoke(cb, <span style="color: blue">new
object</span>[] { fileTrack }); } <span style="color: blue">else </span>{ <span style="color: blue">this</span>.listView1.Items.Add(<span style="color: blue">new </span><span style="color: #2b91af">ListViewItem</span>(<span style="color: blue">new
string</span>[] { fileTrack.Name, fileTrack.Artist, fileTrack.Location, fileTrack.BitRate.ToString()
})); } } <span style="color: blue">private void </span>SetupProgress(<span style="color: blue">int </span>max)
{ <span style="color: blue">if </span>(<span style="color: blue">this</span>.progressBar1.InvokeRequired)
{ <span style="color: #2b91af">SetupProgressCallback </span>cb = <span style="color: blue">new </span><span style="color: #2b91af">SetupProgressCallback</span>(SetupProgress); <span style="color: blue">this</span>.Invoke(cb, <span style="color: blue">new
object</span>[] { max }); } <span style="color: blue">else </span>{ <span style="color: blue">this</span>.progressBar1.Maximum
= max; <span style="color: blue">this</span>.progressBar1.Minimum = 1; <span style="color: blue">this</span>.progressBar1.Step
= 1; <span style="color: blue">this</span>.progressBar1.Value = 1; } } <span style="color: blue">#endregion </span>}
}</pre>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=3128d7df-555b-4a58-93e2-f0404cc51ff6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Extract Method names from a Unit Test Class</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/12/01/ExtractMethodNamesFromAUnitTestClass.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,1ceded77-07d5-4883-9260-5180b08ad45d.aspx</id>
    <published>2011-12-01T18:16:32.121875-05:00</published>
    <updated>2011-12-01T18:16:32.121875-05:00</updated>
    <category term="Unit Testing" label="Unit Testing" scheme="http://www.programgood.net/CategoryView,category,UnitTesting.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is handy to do an auto dump out of class names in the correct order.  Also
getting comments.
</p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7a8fefb1-6f16-4321-9cc1-9150520e35e6" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> button1_Click(</span>
              <span style="color:#93c763">object</span>
              <span style="color:#f1f2f3"> sender, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#f1f2f3"> e)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">""</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> arrayOfLines </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">File</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReadAllLines(</span>
              <span style="color:#efc210">@"C:\code\PVSmartDevice2011\PVSmartDevice\CodeDeviceTests.cs"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">foreach</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> line </span>
              <span style="color:#93c763">in</span>
              <span style="color:#f1f2f3"> arrayOfLines)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (line</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Contains(</span>
              <span style="color:#ec7600">"public
void"</span>
              <span style="color:#f1f2f3">) </span>
              <span style="color:#e8e2b7">||</span>
              <span style="color:#f1f2f3"> line</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Contains(</span>
              <span style="color:#ec7600">"//"</span>
              <span style="color:#f1f2f3">))
{</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> line </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"\r\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> textBox1</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Text </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=1ceded77-07d5-4883-9260-5180b08ad45d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>State Machine and Gumball Console / WinForm / Tests</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/11/28/StateMachineAndGumballConsoleWinFormTests.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,85eb282b-cec7-4cf0-9068-25427571f416.aspx</id>
    <published>2011-11-28T18:57:41.2008786-05:00</published>
    <updated>2011-11-28T22:56:27.7477536-05:00</updated>
    <category term="Head First Design Patterns" label="Head First Design Patterns" scheme="http://www.programgood.net/CategoryView,category,HeadFirstDesignPatterns.aspx" />
    <category term="State Machine" label="State Machine" scheme="http://www.programgood.net/CategoryView,category,StateMachine.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Implementing the gumball machine in a WinForms environment
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/State-Machine--Gumball-WinForm_B31A/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/State-Machine--Gumball-WinForm_B31A/image_thumb_1.png" width="541" height="303" />
          </a>
        </p>
        <p>
The code behind is only controlling the UI, and all state is handled by the Gumball
machine and its’ state classes:  So my event handlers are simply calling the
gumball machine context.
</p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:34c206d0-7fda-4749-b704-7da6936bb883" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">partial</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Form1</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#678cb1">Form</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> Form1()
{</span>
              <br />
              <span style="color:#f1f2f3"> InitializeComponent();</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> PutInLineFeeds(output);</span>
              <br />
              <span style="color:#f1f2f3"> txtOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Text </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> btnInsertQuarter_Click(</span>
              <span style="color:#93c763">object</span>
              <span style="color:#f1f2f3"> sender, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#f1f2f3"> e)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> PutInLineFeeds(output);</span>
              <br />
              <span style="color:#f1f2f3"> txtOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Text </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> txtTurnCrank_Click(</span>
              <span style="color:#93c763">object</span>
              <span style="color:#f1f2f3"> sender, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#f1f2f3"> e)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> PutInLineFeeds(output);</span>
              <br />
              <span style="color:#f1f2f3"> txtOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Text </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> btnRefill_Click(</span>
              <span style="color:#93c763">object</span>
              <span style="color:#f1f2f3"> sender, </span>
              <span style="color:#678cb1">EventArgs</span>
              <span style="color:#f1f2f3"> e)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(</span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> PutInLineFeeds(output);</span>
              <br />
              <span style="color:#f1f2f3"> txtOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Text </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> PutInLineFeeds(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output)
{</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> output</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Replace(</span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">, </span>
              <span style="color:#ec7600">"\r\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
Gumball:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:97895000-90d1-4306-8da8-fe5d6f421dd2" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> hasQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> soldState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> winnerState;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> Count
{ </span>
              <span style="color:#93c763">get</span>
              <span style="color:#f1f2f3"> { </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> count;
} </span>
              <span style="color:#93c763">set</span>
              <span style="color:#f1f2f3"> { count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">value</span>
              <span style="color:#f1f2f3">;
} }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> GumballMachine(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberGumballs)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//creating the state
instances - one of each</span>
              <br />
              <span style="color:#f1f2f3"> noQuarterState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> hasQuarterState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> soldState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> soldOutState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> winnerState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">WinnerState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> numberGumballs;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (numberGumballs </span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Dispense();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(i);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> SetState(</span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> state)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetNoQuarterState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetHasQuarterState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> hasQuarterState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetSoldState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> soldState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetSoldOutState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetWinnerState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> winnerState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ReleaseBall()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (count </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> count</span>
              <span style="color:#e8e2b7">--</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#ec7600">"A
gumball comes rolling out the slot...\n\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> MachineStateHeader()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"Mighty
Gumball, Inc."</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"\nC#
Enabled Standing Gumball Model #2005\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"Inventory:
"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> count </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"
gumball"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (count </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"s"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"\nMachine
is "</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString());</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//a reference to the
gumballMachine</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> NoQuarterState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetHasQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#ec7600">"You
inserted a quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
haven't inserted a quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned but there's no quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
need to pay first\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
NoQuarter.\n Waiting for quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> i;</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"filled
her up"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Random</span>
              <span style="color:#f1f2f3"> randomWinner </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Random</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> HasQuarterState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't insert another quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Quarter
returned\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned...\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//int winner = randomWinner.Next(10);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//if (winner == 0
&amp;&amp; gumballMachine.Count &gt; 1) {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">10</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetWinnerState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"No
gumball dispensed\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
HasQuarter\n waiting for turn of crank"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberOfGumball)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Can't
refill - there is a quarter in the machine so please turn crank"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> SoldState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Please
wait, we're already giving you a gumball\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Sorry,
you already turned the crank\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Turning
twice doesn't get you another gumball!\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldOutState());</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Oops,
out of gumballs!\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
Sold \n delivering a gumball"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberOfGumball)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Can't
refill - you've turned the crank and I'm about to dispense a gumball"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> SoldOutState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't eject, you haven't inserted a quarter yet\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Sorry,
you already turned the crank\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned, but there are no gumballs\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
SoldOut"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> i;</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"filled
her up"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">WinnerState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> WinnerState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Please
wait, we're already giving you a gumball\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Sorry,
you already turned the crank\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Turning
twice doesn't get you another gumball!\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You're
a winner. You get 2 gumballs for your quarter"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldOutState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldOutState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberOfGumball)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Can't
refill..you've turned the crank and I'm about to dispense 2 gumballs"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">interface</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberOfGumball);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
Console app:
</p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:21411d69-747d-491a-a58d-bd948c6aa326" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args) {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">while</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">true</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> typeThing </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState()</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetType();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//NoQuarter</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (typeThing </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">))
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Press
1 to insert quarter or 2 to refill 2 more gumballs"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> input </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReadLine();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">""</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (input </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"1"</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (input </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"2"</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(</span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(output);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//HasQuarter</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (typeThing </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">))
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Press
2 to turn crank or 3 to eject quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> input </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReadLine();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">""</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (input </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"2"</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (input </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"3"</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(output);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//SoldOut</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (typeThing </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">))
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Press
4 to refill 4 gumballs, 5 to refill 5 gumballs"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> input </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReadLine();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">""</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Int32</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TryParse(input, </span>
              <span style="color:#93c763">out</span>
              <span style="color:#f1f2f3"> i);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (input </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"4"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">||</span>
              <span style="color:#f1f2f3"> input </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"5"</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(i);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(output);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
tests:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:71d1f375-2870-4f65-9934-7833b870548f" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballTests</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_sold_out_state_if_has_0_gumballs_to_start_with()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_has_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter_then_ejects()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter_then_turns_crank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//this actually turns
crank and dispenses</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">4</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_sold_out_state_if_has_1_gumball_to_start_with_and_person_inserts_quarter_then_turns_crank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//this actually turns
crank and dispenses</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_gives_correct_message_when_sold_out_and_user_trys_to_insert_a_quarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out\n"</span>
              <span style="color:#f1f2f3">,
output);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_gives_2_gumballs_when_number_in_machine_is_10_faking_a_winner_random_scenario()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">10</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringAssert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Contains(</span>
              <span style="color:#ec7600">"You're
a winner"</span>
              <span style="color:#f1f2f3">, output);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">8</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_goes_to_correct_number_of_gumballs_when_refill_is_done_at_sold_out_state()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(</span>
              <span style="color:#ffcd22">15</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">15</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_goes_to_correct_number_of_gumballs_when_refill_is_done_on_no_quarter_state()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(</span>
              <span style="color:#ffcd22">15</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">20</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> TestGumballMachine()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3"> gumballMachineOutput </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.TurnCrank());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.TurnCrank()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.Refill(5)
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Because of the System.Random
object, there is no way to know</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//the outcome of the
turn of the crank. Therefore, I am writing</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//to the console.
Use the Console.Out tab of NUnit</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=85eb282b-cec7-4cf0-9068-25427571f416" />
      </div>
    </content>
  </entry>
  <entry>
    <title>State Machine</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/11/28/StateMachine.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,2fc476a3-7e23-43e8-80c8-6b860bdd51cb.aspx</id>
    <published>2011-11-27T19:06:07.11275-05:00</published>
    <updated>2011-11-28T17:48:04.9665036-05:00</updated>
    <category term="Head First Design Patterns" label="Head First Design Patterns" scheme="http://www.programgood.net/CategoryView,category,HeadFirstDesignPatterns.aspx" />
    <category term="State Machine" label="State Machine" scheme="http://www.programgood.net/CategoryView,category,StateMachine.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
From Ch10 of Head First Design Patterns.
</p>
        <p>
Problem:  I have a WindowsCE device which every now and again gets into an unknown
state due to connetions lost/something strange happening in the field.
</p>
        <p>
Solution:  Implement a state machine pattern to make sure these cases are handled
correctly
</p>
        <p>
          <a href="http://stackoverflow.com/questions/8264314/windows-forms-simple-state-machine">http://stackoverflow.com/questions/8264314/windows-forms-simple-state-machine</a>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3c3ae5c7-49fb-49b4-939b-94f17f093e9d" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">namespace</span>
              <span style="color:#f1f2f3"> GumballState
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Program</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args) {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(); </span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">enum</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StateType</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> SOLD_OUT </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,</span>
              <br />
              <span style="color:#f1f2f3"> NO_QUARTER </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">,</span>
              <br />
              <span style="color:#f1f2f3"> HAS_QUARTER </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">,</span>
              <br />
              <span style="color:#f1f2f3"> SOLD </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">
              </span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//created an instance
variable to hold the state values</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">private</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3">)</span>
              <span style="color:#678cb1">StateType</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SOLD_OUT;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> GumballMachine()
{</span>
              <br />
              <span style="color:#f1f2f3"> InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//conditional code
within method to handle each state</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3">)</span>
              <span style="color:#678cb1">StateType</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">HAS_QUARTER)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
can't insert another quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3">)</span>
              <span style="color:#678cb1">StateType</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SOLD_OUT)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3">)</span>
              <span style="color:#678cb1">StateType</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SOLD)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Please
wait, we're giving you a gumball"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3">)</span>
              <span style="color:#678cb1">StateType</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NO_QUARTER)
{</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3">)</span>
              <span style="color:#678cb1">StateType</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">HAS_QUARTER;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
inserterd a quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">}</span>
            </div>
          </div>
        </div>
        <p>
felt a bit verbose for a simple example.. so using static readonly ints…maybe better
private const int  (then CAPS would be more ok!)
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:98f2397e-bd5c-4afd-9c20-d2c833e1c93e" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">namespace</span>
              <span style="color:#f1f2f3"> GumballState
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Program</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args) {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(); </span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> SOLD_OUT </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> NO_QUARTER </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> HAS_QUARTER </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> SOLD </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//created an instance
variable to hold the state values</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> SOLD_OUT;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> GumballMachine()
{</span>
              <br />
              <span style="color:#f1f2f3"> InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//conditional code
within method to handle each state</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> HAS_QUARTER)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
can't insert another quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> SOLD_OUT)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> SOLD)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Please
wait, we're giving you a gumball"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> NO_QUARTER)
{</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> HAS_QUARTER;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
inserterd a quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">}</span>
            </div>
          </div>
        </div>
        <p>
this is fine
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:547eb956-4302-492f-9377-b8bdc939169a" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Program</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Main(</span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3">[]
args) {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">20</span>
              <span style="color:#f1f2f3">); </span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//enums is bigger
app.. usually CamelCase</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> SOLD_OUT </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> NO_QUARTER </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> HAS_QUARTER </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">2</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">static</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">readonly</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> SOLD </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//created an instance
variable to hold the state value... could use underscore here.</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> SOLD_OUT;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//another instance
variable to keep track of number of gumballs in machine</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> currentNumberOfGumballsInMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> GumballMachine(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> initialNumberOfGumballsInMachine)
{</span>
              <br />
              <span style="color:#f1f2f3"> currentNumberOfGumballsInMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> initialNumberOfGumballsInMachine;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (currentNumberOfGumballsInMachine </span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> NO_QUARTER;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> DisplayStatus()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> x </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Number
of Gumballs: "</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> currentNumberOfGumballsInMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString();</span>
              <br />
              <span style="color:#f1f2f3"> x </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Environment</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NewLine;</span>
              <br />
              <span style="color:#f1f2f3"> x </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString();</span>
              <br />
              <span style="color:#f1f2f3"> x </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Environment</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">NewLine;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> x;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//conditional code
within method to handle each state</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> HAS_QUARTER)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
can't insert another quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> SOLD_OUT)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> SOLD)</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Please
wait, we're giving you a gumball"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> NO_QUARTER)
{</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> HAS_QUARTER;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
inserterd a quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> HAS_QUARTER)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Quarter
returned"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> NO_QUARTER;</span>
              <br />
              <span style="color:#f1f2f3"> } </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"logic
error in EjectQuarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> HAS_QUARTER)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"You
turned"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> SOLD;</span>
              <br />
              <span style="color:#f1f2f3"> Dispense();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (state </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3"> SOLD)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"a
gumball comes rolling out of the slot"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> currentNumberOfGumballsInMachine </span>
              <span style="color:#e8e2b7">-=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (currentNumberOfGumballsInMachine </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(</span>
              <span style="color:#ec7600">"Out
of gumballs"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> SOLD_OUT;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> NO_QUARTER;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
and wrapping some smelly testing around it:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:80211524-313c-47d8-b908-69d427a5f6e1" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballTests</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> MyTestMethod()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> g </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">3</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> y </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> g</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">DisplayStatus();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(y);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> g</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> g</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3"> y </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> g</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">DisplayStatus();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(y);</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Assert.AreEqual(3,
g.currentNumberOfGumballsInMachine);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
not refactored at all.. but goal is to learn about state…
</p>
        <h3>What happens if code changes ie a new feature request – State Pattern
</h3>
        <p>
Problem is that now I need to change a lot of my state code.. gets messy and complex
very quickly.
</p>
        <p>
So we want something down the road which is easy to maintain.
</p>
        <p>
Each state class is responsible for the behaviour of the ‘gumball machine’ when it
is in that state
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:080ca62a-48a0-426e-8841-2f5649baf108" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> hasQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> soldState;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> Count
{ </span>
              <span style="color:#93c763">get</span>
              <span style="color:#f1f2f3"> { </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> count;
} }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> GumballMachine(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberGumballs)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//creating the state
instances - one of each</span>
              <br />
              <span style="color:#f1f2f3"> noQuarterState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> hasQuarterState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> soldState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> soldOutState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> numberGumballs;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (numberGumballs </span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Dispense();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> SetState(</span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> state)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetNoQuarterState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetHasQuarterState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> hasQuarterState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetSoldState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> soldState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetSoldOutState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ReleaseBall()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (count </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> count</span>
              <span style="color:#e8e2b7">--</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#ec7600">"A
gumball comes rolling out the slot...\n\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> MachineStateHeader()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"Mighty
Gumball, Inc."</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"\nC#
Enabled Standing Gumball Model #2005\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"Inventory:
"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> count </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"
gumball"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (count </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"s"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"\nMachine
is "</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString());</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//a reference to the
gumballMachine</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> NoQuarterState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetHasQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#ec7600">"You
inserted a quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
haven't inserted a quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned but there's no quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
need to pay first\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
NoQuarter.\n Waiting for quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//IState soldState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Random randomWinner
= new Random(System.DateTime.Now.Millisecond);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> HasQuarterState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//soldState = new
SoldState(gumballMachine);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't insert another quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Quarter
returned\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned...\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//int winner = randomWinner.Next(10);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//if (winner == 0
&amp;&amp; gumballMachine.Count &gt; 1) {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">// gumballMachine.StateOfMachine
= new WinnerState(gumballMachine);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//}</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//else {</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//}</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"No
gumball dispensed\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
HasQuarter\n waiting for turn of crank"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> SoldState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Please
wait, we're already giving you a gumball\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Sorry,
you already turned the crank\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Turning
twice doesn't get you another gumball!\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldOutState());</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Oops,
out of gumballs!\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
Sold \n delivering a gumball"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> SoldOutState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't eject, you haven't inserted a quarter yet\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Sorry,
you already turned the crank\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned, but there are no gumballs\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
SoldOut"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">interface</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
and tests:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f3e21228-5db4-4a54-8f01-c729f2e7f30b" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballTests</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_sold_out_state_if_has_0_gumballs_to_start_with()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_has_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter_then_ejects()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter_then_turns_crank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//this actually turns
crank and dispenses</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">4</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_sold_out_state_if_has_1_gumball_to_start_with_and_person_inserts_quarter_then_turns_crank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//this actually turns
crank and dispenses</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_gives_correct_message_when_sold_out_and_user_trys_to_insert_a_quarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out\n"</span>
              <span style="color:#f1f2f3">,
output);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> TestGumballMachine()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3"> gumballMachineOutput </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.TurnCrank());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.TurnCrank()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.Refill(5)
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Because of the System.Random
object, there is no way to know</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//the outcome of the
turn of the crank. Therefore, I am writing</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//to the console.
Use the Console.Out tab of NUnit</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
Added in a Winner State, and a refill transition/action.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5d1b574b-a8d1-4839-91b0-49983d4562e9" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> hasQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> soldState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> winnerState;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> Count
{ </span>
              <span style="color:#93c763">get</span>
              <span style="color:#f1f2f3"> { </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> count;
} </span>
              <span style="color:#93c763">set</span>
              <span style="color:#f1f2f3"> { count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">value</span>
              <span style="color:#f1f2f3">;
} }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> GumballMachine(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberGumballs)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//creating the state
instances - one of each</span>
              <br />
              <span style="color:#f1f2f3"> noQuarterState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> hasQuarterState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> soldState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> soldOutState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> winnerState </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">WinnerState</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#93c763">this</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> numberGumballs;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (numberGumballs </span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3"> state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Dispense();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(i);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> SetState(</span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> state)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">state </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> state;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetNoQuarterState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> noQuarterState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetHasQuarterState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> hasQuarterState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetSoldState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> soldState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetSoldOutState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> soldOutState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> GetWinnerState()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> winnerState;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ReleaseBall()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (count </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> count</span>
              <span style="color:#e8e2b7">--</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#ec7600">"A
gumball comes rolling out the slot...\n\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> MachineStateHeader()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> result </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"Mighty
Gumball, Inc."</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"\nC#
Enabled Standing Gumball Model #2005\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"Inventory:
"</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> count </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"
gumball"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (count </span>
              <span style="color:#e8e2b7">!=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"s"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(</span>
              <span style="color:#ec7600">"\nMachine
is "</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3"> state</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString());</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> result</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString();</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//a reference to the
gumballMachine</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> NoQuarterState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetHasQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> (</span>
              <span style="color:#ec7600">"You
inserted a quarter"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
haven't inserted a quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned but there's no quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
need to pay first\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
NoQuarter.\n Waiting for quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3"> i;</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"filled
her up"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Random</span>
              <span style="color:#f1f2f3"> randomWinner </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Random</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> HasQuarterState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't insert another quarter\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Quarter
returned\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned...\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//int winner = randomWinner.Next(10);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//if (winner == 0
&amp;&amp; gumballMachine.Count &gt; 1) {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">10</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetWinnerState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"No
gumball dispensed\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
HasQuarter\n waiting for turn of crank"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberOfGumball)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Can't
refill - there is a quarter in the machine so please turn crank"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> SoldState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Please
wait, we're already giving you a gumball\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Sorry,
you already turned the crank\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Turning
twice doesn't get you another gumball!\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">&gt;</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldOutState());</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Oops,
out of gumballs!\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
Sold \n delivering a gumball"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberOfGumball)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Can't
refill - you've turned the crank and I'm about to dispense a gumball"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> SoldOutState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
can't eject, you haven't inserted a quarter yet\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Sorry,
you already turned the crank\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">+=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You
turned, but there are no gumballs\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">override</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> ToString()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"State:
SoldOut"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> i)
{</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> i;</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"filled
her up"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">WinnerState</span>
              <span style="color:#f1f2f3"> : </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3"> WinnerState(</span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">this</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Please
wait, we're already giving you a gumball\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Sorry,
you already turned the crank\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Turning
twice doesn't get you another gumball!\n"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"You're
a winner. You get 2 gumballs for your quarter"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldOutState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ReleaseBall();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">if</span>
              <span style="color:#f1f2f3"> (gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count </span>
              <span style="color:#e8e2b7">==</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">)</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetSoldOutState());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">else</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">SetState(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetNoQuarterState());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3"> output;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberOfGumball)
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">return</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"Can't
refill..you've turned the crank and I'm about to dispense 2 gumballs"</span>
              <span style="color:#f1f2f3">;</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">interface</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#8c8cb4">IState</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Dispense();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">string</span>
              <span style="color:#f1f2f3"> Refill(</span>
              <span style="color:#93c763">int</span>
              <span style="color:#f1f2f3"> numberOfGumball);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <p>
and tests:
</p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:fdb64700-4095-4ec1-8260-afadff1adfc6" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background-color: #000000; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap">
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">TestFixture</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">class</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballTests</span>
              <span style="color:#f1f2f3"> {</span>
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_sold_out_state_if_has_0_gumballs_to_start_with()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_has_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter_then_ejects()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">EjectQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_no_quarter_state_if_has_5_gumballs_to_start_with_and_person_inserts_quarter_then_turns_crank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//this actually turns
crank and dispenses</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">4</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_is_in_sold_out_state_if_has_1_gumball_to_start_with_and_person_inserts_quarter_then_turns_crank()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">1</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//this actually turns
crank and dispenses</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_gives_correct_message_when_sold_out_and_user_trys_to_insert_a_quarter()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ec7600">"You
can't insert a quarter, the machine is sold out\n"</span>
              <span style="color:#f1f2f3">,
output);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_gives_2_gumballs_when_number_in_machine_is_10_faking_a_winner_random_scenario()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">10</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">HasQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank();</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringAssert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Contains(</span>
              <span style="color:#ec7600">"You're
a winner"</span>
              <span style="color:#f1f2f3">, output);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">8</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_goes_to_correct_number_of_gumballs_when_refill_is_done_at_sold_out_state()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">0</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">SoldOutState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(</span>
              <span style="color:#ffcd22">15</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">15</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> machine_goes_to_correct_number_of_gumballs_when_refill_is_done_on_no_quarter_state()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">var</span>
              <span style="color:#f1f2f3"> output </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3"> gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Refill(</span>
              <span style="color:#ffcd22">15</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">AreEqual(</span>
              <span style="color:#ffcd22">20</span>
              <span style="color:#f1f2f3">,
gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Count);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Assert</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">That(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">GetState(), </span>
              <span style="color:#678cb1">Is</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TypeOf(</span>
              <span style="color:#93c763">typeof</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#678cb1">NoQuarterState</span>
              <span style="color:#f1f2f3">)));</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3"> [</span>
              <span style="color:#678cb1">Test</span>
              <span style="color:#f1f2f3">]</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">public</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">void</span>
              <span style="color:#f1f2f3"> TestGumballMachine()
{</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3"> gumballMachine </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">GumballMachine</span>
              <span style="color:#f1f2f3">(</span>
              <span style="color:#ffcd22">5</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3"> gumballMachineOutput </span>
              <span style="color:#e8e2b7">=</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#93c763">new</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">StringBuilder</span>
              <span style="color:#f1f2f3">();</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">MachineStateHeader() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3"> gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">Append(gumballMachine</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">TurnCrank() </span>
              <span style="color:#e8e2b7">+</span>
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#ec7600">"\n"</span>
              <span style="color:#f1f2f3">);</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.TurnCrank());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.InsertQuarter());</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.TurnCrank()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.Refill(5)
+ "\n");</span>
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//gumballMachineOutput.Append(gumballMachine.MachineStateHeader()
+ "\n");</span>
              <br />
              <br />
              <br />
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//Because of the System.Random
object, there is no way to know</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//the outcome of the
turn of the crank. Therefore, I am writing</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#66747b">//to the console.
Use the Console.Out tab of NUnit</span>
              <br />
              <span style="color:#f1f2f3">
              </span>
              <span style="color:#678cb1">Console</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">WriteLine(gumballMachineOutput</span>
              <span style="color:#e8e2b7">.</span>
              <span style="color:#f1f2f3">ToString());</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
              <br />
              <span style="color:#f1f2f3"> }</span>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=2fc476a3-7e23-43e8-80c8-6b860bdd51cb" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Export database in Azure</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/10/26/ExportDatabaseInAzure.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,2f0e07f3-25b5-4da2-b336-0edfdf456464.aspx</id>
    <published>2011-10-25T21:57:14.6401735-04:00</published>
    <updated>2011-10-25T21:57:14.6401735-04:00</updated>
    <category term="Azure" label="Azure" scheme="http://www.programgood.net/CategoryView,category,Azure.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Use: <a href="http://www.red-gate.com/products/dba/sql-azure-backup/download">http://www.red-gate.com/products/dba/sql-azure-backup/download</a></p>
        <p>
**SCRATCH ALL THIS BELOW**
</p>
        <p>
I used to use Generate scripts, however this can take a while.
</p>
        <p>
Now there is an Export option in the Silverlight admin interface:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Export-database-in-Azure_C790/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Export-database-in-Azure_C790/image_thumb.png" width="644" height="365" />
          </a>
        </p>
        <p>
button in export:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Export-database-in-Azure_C790/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Export-database-in-Azure_C790/image_thumb_1.png" width="747" height="495" />
          </a>
        </p>
        <p>
Access key is found in Hosted Services, Storage
</p>
        <p>
Then before pressing go you need to make sure the container is there.  I used
Azure Blob Storage Studio: <a href="http://azureblobstudio.codeplex.com/">http://azureblobstudio.codeplex.com/</a></p>
        <p>
To see if job has finished:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/Export-database-in-Azure_C790/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/Export-database-in-Azure_C790/image_thumb_2.png" width="761" height="451" />
          </a>
        </p>
        <p>
click on Status of the database.
</p>
        <p>
Its pretty fast.  Also a good way to tell if you’ve messed up any logon / password
stuff.
</p>
        <p>
Then download the bacpac file using blob studio.
</p>
        <h3>Restore the database on local SQL Server
</h3>
        <p>
couldn’t figure out how to restore a .bacpac file.. can do a .dacpac from the root
of sqlserver in management studio.
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=2f0e07f3-25b5-4da2-b336-0edfdf456464" />
      </div>
    </content>
  </entry>
  <entry>
    <title>GitHub–permission denied publickey</title>
    <link rel="alternate" type="text/html" href="http://www.programgood.net/2011/10/25/GitHubpermissionDeniedPublickey.aspx" />
    <id>http://www.programgood.net/PermaLink,guid,172a40d7-9749-48b1-a5ca-d77914a28082.aspx</id>
    <published>2011-10-25T18:26:51.3955595-04:00</published>
    <updated>2011-10-25T18:26:51.3955595-04:00</updated>
    <category term="Git" label="Git" scheme="http://www.programgood.net/CategoryView,category,Git.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_thumb.png" width="666" height="341" />
          </a>
        </p>
        <p>
hmmmm
</p>
        <p>
I did all this (using an existing repo)
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/Windows-Live-Writer/GitHubpermission-denied-public-key_93A5/image_thumb_1.png" width="617" height="471" />
          </a>
        </p>
        <p>
follow instructions here!
</p>
        <p>
          <a href="http://help.github.com/win-set-up-git/">http://help.github.com/win-set-up-git/</a>
        </p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=172a40d7-9749-48b1-a5ca-d77914a28082" />
      </div>
    </content>
  </entry>
</feed>
