<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>John Smith's Blog</title>
        <link>http://geekswithblogs.net/onefloridacoder/Default.aspx</link>
        <description>Keeping the fun machine running one nickel at a time</description>
        <language>en-US</language>
        <copyright>onefloridacoder</copyright>
        <managingEditor>onefloridacoder@live.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>John Smith's Blog</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/onefloridacoder/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Where is onefloridacoder?</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/11/12/where-is-onefloridacoder.aspx</link>
            <description>&lt;p&gt;I haven’t written a post in a while, and this has shown up in my Twitter feed a few times.  So if you care, here you go.&lt;/p&gt;  &lt;p&gt;I decided to take a break from all of the social networking stuff and see how life is/was before all of that.  It kept me from “noodling” with my phone which seem to make my wife think I was working.  She likes it better when she believes I’m working less, and actually so do I.  One plus.&lt;/p&gt;  &lt;p&gt;On Twitter I picked up on cool conference that was happening and I attended, and many other bits that help me get (more) up to speed on Silverlight, namely Blend from some very smart people.  So I missed all of that “content” in my daily life for a while.  But it did help me focus without worrying missing out on what the latest bits/news from Senor Gu and folk.  All that stuff is good, and at times hot, but I just had my head stuck in it all of the time.&lt;/p&gt;  &lt;p&gt;I was looking through my reader this morning and ran across a post about Pex, Code Contracts, Stubs, and Moles.  Very cool stuff, and those bits are just as interesting and at times even more so when I’m not worrying about making four controls bind to some bit in my View Model and the easing that needs to happen when they do.  I love the thought of writing tests, but haven’t written anything worthwhile lately.  Umm, that statement is wrong on a few levels.&lt;/p&gt;  &lt;p&gt;Without the distractions, I’ve had a very interesting tour around NHibernate, Blend, and living in between a service layer and a Silverlight client over the last four months with some Prism and Unity sprinkled in for good measure (and loose coupling).  &lt;/p&gt;  &lt;p&gt;It’s been difficult, challenging, fun, and educating.   I just sent my NHibernate In Action back to the library yesterday and will just try to work off the examples I’ve created so far to make (better) DAL solutions going forward.   The point I will make here is one that I shared with another dev recently.  I didn’t get here alone, obviously.  There’s a sticky note I have stuck to a lamp in my home office:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;(IND) (INT)&lt;/p&gt;    &lt;p&gt;---------------&lt;/p&gt;    &lt;p&gt;(TLS) (PROC)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;which is meant to read individuals and interactions over tools and process.  I picked this up reading about Agile.  A friend of my said once “Know the rules before you buy the tools.”  Effectively meaning learn how to write a WCF service (ugly if you like) by hand before you install WSSF.  At least you’ll how it’s supposed work when it breaks.  Which means I needed to spend some time with some other folks and their code to figure how to apply their solutions to my problems.  The (IND) (INT) notion is one that I am building more relationships with folks that I’ve not know before.   Collaboration is better when you tear down a few walls, open a few doors, and pry open some windows that have been painted shut.  Some of this through volunteering for different things in my community and church.&lt;/p&gt;  &lt;p&gt;Another friend who just joined Microsoft encouraged me  do more community work – so that one is the list.  The list gets (re)built each year. My personal “physical” year starts in October, that’s when I make take a day off from everything and measure where I’ve been and plan where I want to go.  I was less modest this year, and put some bigger stuff items on the list.  I’m making good gains on it, but things had to fall by the wayside – the social stuff.  I still peek a the Twitter client on my phone, but it is the least used app on my phone.  Evernote gets most of the action - its amazing what you can remember if you write it down:  bass guitar licks, code fragments, really good and really bad ideas, etc.&lt;/p&gt;  &lt;p&gt;This helps the development thing seem much less grand and important – which has reduced my stress levels.  So when I’m not stressed over a time line at work, my wife thinks that I’m not working so much.  She likes it better when she believes I’m working less, and actually so do I.  Two pluses, or actually Me++.  This is where I’ve been.&lt;/p&gt;  &lt;p&gt;More later, until then.&lt;/p&gt;  &lt;p&gt;ofc&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136244"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136244" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/136244.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/11/12/where-is-onefloridacoder.aspx</guid>
            <pubDate>Thu, 12 Nov 2009 20:56:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/136244.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/11/12/where-is-onefloridacoder.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/136244.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ex Libre</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/08/20/ex-libre.aspx</link>
            <description>&lt;p&gt;I have finished a couple of books that I would like to plug here.  One is “&lt;a href="http://www.artofunittesting.com/"&gt;The Art of Unit Testing&lt;/a&gt;”  and the other is &lt;a href="http://oreilly.com/catalog/9780596520687/"&gt;Regular Expressions Cookbook&lt;/a&gt;.  I waited for both to drop, and as soon as they did I picked them up.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;font color="#ffffff" size="2"&gt;&lt;u&gt;The Art of Unit Testing&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The Art of Unit Testing (TAoUT) has received many awesome reviews with some folks guessing there may be a *DD book coming out soon by the same author.  Well see, and it would be nice to have a compilation of *DD guidance for those that can dig(g) and use a *DD form.&lt;/p&gt;  &lt;p&gt;TAoUT demonstrated a lot of common sense maneuvers and choices in  how to construct, use, and maintain your unit tests.  There really is more to it than meets the eyes especially after you get your eyes in front of this book.  If you’re familiar to UTs it might be a quick read, maybe not.  I thought I was a great tester, but Roy schooled me on a few things that make a lot of sense to me now.  &lt;/p&gt;  &lt;p&gt;This isn’t chicken soup for your unit testing, but it’s a way to learn how to step back and say, hmmm, I think I’ll write them differently.  If you’re read my blog before you know I like &lt;a href="http://research.microsoft.com/en-us/projects/pex/"&gt;PEX&lt;/a&gt;, very much.  But at times PEX may be a very large answer to a very small problem.  This is about using the right tool for the right job, and in this case it’s my brain that I need to use, along with Roy’s guidance.  This is the way to get it, then pass it on to the next *DD’er that walks into my cube.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I would highly recommend you pick up this book and see how it can benefit you, your (non)existing UTs, and/or your test team.  I was looking at testing code a lot differently the week after I finished this book, hopefully it will do the same for you.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font color="#ffffff" size="2"&gt;Regular Expression Cookbook&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;I wrote many lines of weird and cryptic Unix shell code to strip, extract, glue, paste, and count text out of flat files in a previous life.  A few years ago I was writing a lot ASP code and thought at times “ A RegEx would just be the sweetest (and more maintainable) thing to do for this problem “.  Especially since we picked validator controls that could evaluate a RegEx.&lt;/p&gt;  &lt;p&gt;When I saw this book come through my RSS reader one day, I was thinking about what I wrote above.  I know very little about writing or building a RegEx, but I’m really excited to know that this book will help me figure this out and drop another tool in the toolbox.  In other O’Reilly books the “mascot” on the cover is usually explained maybe this has changed but it looks like Templeton, the rat from Charlottes’ Web, this fact is interesting on a few levels.&lt;/p&gt;  &lt;p&gt;The book has already gotten some awesome &lt;a href="http://www.amazon.com/Regular-Expressions-Cookbook-Jan-Goyvaerts/product-reviews/0596520689/ref=sr_1_1_cm_cr_acr_img?ie=UTF8&amp;amp;showViewpoints=1"&gt;reviews on Amazon&lt;/a&gt; and they are correct in their assessments.  I’m recommending this book as well.  I have a Safari account so I could read the book without any restriction but I purchased it anyway.  There’s also a Kindle edition if that’s how you like your reading material presented.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;More later.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134211"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134211" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/134211.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/08/20/ex-libre.aspx</guid>
            <pubDate>Thu, 20 Aug 2009 14:09:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/134211.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/08/20/ex-libre.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/134211.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Flex Your Pex (Update)</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/07/19/flex-your-pex-update.aspx</link>
            <description>&lt;p&gt;My Pex has not flexed recently. &lt;a href="http://blog.dotnetwiki.org/2009/07/15/PexV015407141BetterPerformanceLessBugs.aspx"&gt;Peli has dropped a new version&lt;/a&gt; of Pex with a few breaking changes and I’m two revs behind him on implementing.  One thing that I’ve come to realize is that I can’t manage the churn taking place for the code under test.  The last few sprints have introduce large amounts of change in our persistence model and that, well, just screws the pooch when you’re trying to keep things updated.  I’m trying to figure out the best way to manage the churn in my testing libraries – and hopefully Peli implemented some of my hidden feature requests he noticed a while back.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;In addition to this a &lt;a href="http://code.msdn.microsoft.com/silverlightut"&gt;framework for Silverlight UI&lt;/a&gt; testing dropped (twice) during my last sprint and this was an interesting and valuable distraction from Pex.  However, in Pex’ defense, it is very easy to rebuild anything you’ve constructed so far but my advice would be to version your custom code.  I built up many stubs and factories for Pex to use when it needed to build up certain types.  Most of that code I can keep since the interface changes were limited in some areas.  Other areas it was not, and that code will just get dropped.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;My strategy will probably revolve around the UI and service implementations and balance when they are getting close to “done-done”.  Most of the Pex setup work can be done on the “not-so-done” elements and then will get fleshed out when they arrive at “mostly-done-done” stage.   We have a mocking library as well which has a lot of code that will change as well, but for the most part isn’t adding much value while Pex is duplicating some of this effort.  The library we are using works with Pex, so I may have the libraries join forces and/or just build my own PUTs for the “mostly-done-done”, this would be on the service implementations.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;That still leaves the Silverlight unit testing work, it’s very automated as well and can using the A-A-A model for building tests like Pex suggests.  Oh, and the bread crumbs I need to leave behind for the sustainment folks as well have to be straightforward otherwise I’ll be building tests that won’t be used in the future for regression.  Pex helps with this, but folks will need to (want to) understand how that happens.  All of this to aid in getting us closer to CI – more rapid feedback for all to see and use.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;More later.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133581"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133581" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/133581.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/07/19/flex-your-pex-update.aspx</guid>
            <pubDate>Sun, 19 Jul 2009 18:40:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/133581.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/07/19/flex-your-pex-update.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/133581.aspx</wfw:commentRss>
        </item>
        <item>
            <title>My First SketchFlow</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/07/19/my-first-sketchflow.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/MyFirstSketchFlow_737C/FirstSketchFlow_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FirstSketchFlow" border="0" alt="FirstSketchFlow" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/MyFirstSketchFlow_737C/FirstSketchFlow_thumb.png" width="192" height="83" /&gt;&lt;/a&gt; Last night I finished my first SketchFlow project last night.  I was using the (free) first chapter of an upcoming book &lt;a href="http://www.dynamic-prototyping.com/"&gt;“Dynamic Prototyping with SketchFlow in Expression Blend&lt;/a&gt;”.  This copy doesn’t look like first draft stuff, it’s stuff that you can use right now.  The free chapter gets you grounded with how you can put SketchFlow to work for you.  &lt;/p&gt;  &lt;p&gt;The first thing I did was set aside what little I knew about prototyping.  I’ve used many napkins to layout an app and that makes total sense.  The examples do as much but have added color to their napkins (sketches).  While building this first project I wanted to make things click and move, add behaviors, “oh, I can make this spin or flip!”, you get it.   Resist that urge and wait to satisfy those “demons” when your layout is finished.  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Taken from the “Who Should Read This Book" section&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;font color="#ff8000"&gt;If you’re a software architect or developer that often finds yourself thrust into playing the role of a designer in your projects and day to day activities you’ll find that the techniques put forth here will enhance your ability to do better work. This book shouldn’t however be regarded as a replacement for having the capability and skill of a professional designer on your project team.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Bingo.  I won’t feel too guilty about wearing a designer hat for my own projects, but my designs shouldn’t go much further than something that has a &lt;a href="http://www.balsamiq.com/products/mockups"&gt;Balsamiq&lt;/a&gt; look (which it can do OTB), nothing polished but still conveying intent.  That’s what we’re after right?  Not even being a devigner (or Deselepor as they said on C9 yesterday) myself, it was hard not to stay out of the behavior folder.  But I did.  If you’re the hard core designer, you probably have more business in that behavior folder than I but get the layout right and flowing first.  Let me rephrase that, get your sketches laid out and flowing, first.  Adding navigation is a snap and once I wired the navigation for each object in the SketchFlow Map surface (the pane on the bottom with the colored shapes) it worked.  After I started exercising the the flow navigation when I ran the app a few things happened: more/better ideas for the flow and layout started appearing;  I dropped a shape and added two; made a few navigation connection swaps on a few shapes which made more sense after walking through the app;  I came up with a better name for some shapes.  Two words:  rapid feedback.  Two more words: love it.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I followed along in the first chapter until the author begin importing assets.  Then I scanned my own sketches I had done a few nights before during a trip to the library with my kids.  Within an hour I had things snapped together and the SketchFlow Navigator was moving me around the layout.  The export to Word worked as advertised.  I’m going to take this back to see if I can enlist some folks using Blend for the first time to help build up the application.  This will mainly be an exercise to help move myself and someone else forward using this technology.  I’ve already added the few initial user stories to my &lt;a href="http://www.agilezen.com/"&gt;AgileZen&lt;/a&gt; backlog so I ready to go.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Lessons Learned&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;ol&gt;     &lt;li&gt;Scan as grayscale if using #2 pencil and regular 8x11 paper &lt;/li&gt;      &lt;li&gt;Ink pens or Sharpies work better but don’t have erasers &lt;/li&gt;      &lt;li&gt;Can add some color for emphasis using Sharpies &lt;/li&gt;      &lt;li&gt;Multiple sketches on one page can be imported as Sketch01, Sketch02, … &lt;/li&gt;      &lt;li&gt;Multiple sketches on one page, then use Paint(.net) to crop into individual sketches &lt;/li&gt;      &lt;li&gt;Import cropped sketches, images, etc. into appropriately named folders with descriptive names &lt;/li&gt;      &lt;li&gt;Cropped sketches with real names that match SketchFlow shapes helps with Assets display later on. &lt;/li&gt;      &lt;li&gt;If possible use generic names for sketch components so they can be composed on multiple shapes &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Try to keep Sharpie tips off of the library table tops &lt;/li&gt; &lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133580"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133580" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/133580.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/07/19/my-first-sketchflow.aspx</guid>
            <pubDate>Sun, 19 Jul 2009 17:38:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/133580.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/07/19/my-first-sketchflow.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/133580.aspx</wfw:commentRss>
        </item>
        <item>
            <title>BDUF? I want to go to Fiji!</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/07/02/bduf-i-want-to-go-to-fiji.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="200px-Trumanshow" border="0" alt="200px-Trumanshow" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/BDUFIwanttogotoFiji_776/200px-Trumanshow_53f914fb-10e8-4aae-bf3c-ba986a52d643.jpg" width="170" height="244" /&gt; BDUF&lt;/a&gt; was especially interesting when I heard &lt;a href="http://www.peterprovost.org/"&gt;Peter Provost&lt;/a&gt; and &lt;a href="http://www.dotnetmasters.com/"&gt;Billy Hollis&lt;/a&gt; speak on this topic during their presentations at the PnP Summit last year.  Both made points that I could definitely relate to.  You see the (embarrassing) thing about this post is that I didn’t know what BDUF was, and was living it everyday, but waterfall was supposed to be OK?  I never heard anyone say BDUF until I hooked up with .NET a few years ago (I wrote my first line in December of 2003), even having done a few tours with Java (1.1) and VB6/ASP.  Instead it was a place I had spent many years living in, remember The Truman Show, like that.&lt;/p&gt;  &lt;p&gt;I was driving home today after a very long day of WCF unit testing for a current project I’m helping with and realized why the day was so long.  I wanted everything to work like it was a BDUF project.  I thought everything I was working against in the DAL was done, that’s what you finish first, right?  A very awesome coder who is our technical leader is cranking out some awesome NHibernate bits for our DAL.  But we’re using Agile to make this solution happen.   My first sprint planning meeting I was biting my tongue to keep from asking BDUF questions, this was the first sign that this BDUF was very deeply engrained in this developer’s habits and thoughts.  Maybe I’m making it sound worse than it is.  But having done so much BDUF development which never really had a great design to begin always looked like something else, and didn’t really hit the target, budget, or timeline.  I’ll stop there, I won’t throw anyone under the bus – teams succeed and fail together.&lt;/p&gt;  &lt;p&gt;I thought it was worth throwing out a few words on the topic since I’m really enjoying the Agile development and the community is by and large running with it (slowly) as well.  But, to a point that Billy Hollis made, waterfall development has a place in some &lt;s&gt;shops&lt;/s&gt; projects.  He gave an example on building rule-based systems where the rules needed to be defined before the system construction could start.  And in that example, his team was successful and the customer was happy with the result.&lt;/p&gt;  &lt;p&gt;However, in my experiences, I’ve seen and been a part of the teams that left a wake of poorly written code that couldn’t be maintained.  How could this happen? I think that some folks believe that it’s far less expensive to support a system than to (re)build it.  I heard Michael Feathers discussing a &lt;a href="http://martinfowler.com/bliki/StranglerApplication.html"&gt;Strangler System&lt;/a&gt; on &lt;a href="http://www.hanselminutes.com/default.aspx?showID=183"&gt;Hanselminutes&lt;/a&gt;.  I can see this approach working for some of those systems, however the date on the article is June 2004.  Just like Truman I was fast asleep and no one was trying to wake me up back then.  If the community was thinking about Strangler Systems, we were probably aware that the waterfall might not be a great thing. &lt;/p&gt;  &lt;p&gt;This sprint is going very well so far and it’s still early.  The customers are asking great questions, providing awesome feedback during the cooldowns – and we are not reacting, but we are responding.  And my part of the sprint will be going even better once I get back to my desk and comment out the code that really shouldn’t have been written in the first place.  Refactoring code that doesn’t even serve a need yet, geez!  But with BDUF you are always in that 9th inning push to clean the bases and bring everything home.  Like &lt;a href="http://espn.go.com/classic/obit/williams_ted_obit.html"&gt;Ted Williams&lt;/a&gt;, I’ll just try to get my three hits each game, win or lose.  Someday I’ll get to Fiji, the airfare in my part of the division is getting cheaper by the sprint.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133233"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133233" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/133233.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/07/02/bduf-i-want-to-go-to-fiji.aspx</guid>
            <pubDate>Fri, 03 Jul 2009 04:31:55 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/133233.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/07/02/bduf-i-want-to-go-to-fiji.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/133233.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Flex Your Pex (Part 4)</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/05/26/flex-your-pex-part-4.aspx</link>
            <description>&lt;p&gt;A couple of notes about my environment that I didn’t state before.  The laptop I’m use is a typical laptop 4Gb of memory standard dual-core, with 64-bit Vista Ultimate as the OS.  There don’t appear to be any limitations Pex in on 64-bit, but there are a few messages you’ll see on the dashboard that state that Pex Explorations are going through some kind of “(x86) cold-start”.  The first time  saw this I thought that I might need to spin up a test project on a 32-bit VM, but it works fine on a 64-bit box.   It was built for Vista 32/64-bit machines and should work but are untested on XP, and versions of Windows Server.  Here’s the requirements from the Pex site:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_16.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="144" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_thumb_7.png" width="497" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_2.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="131" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_thumb.png" width="183" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are two builds for Pex, found &lt;a href="http://research.microsoft.com/en-us/projects/pex/downloads.aspx"&gt;here&lt;/a&gt;.  The academic and the not-ready-for-primetime commercial pre-release versions.  I’m using the one noted to the left.  I used a previous version on a recent project, and I’ll bump it up to this build, or the next build if the Pex team drops one sooner.   The only extra piece in play is xUnit, which is what I’m using for unit testing at the moment.  Pressing on.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Running the test runner right now, you’ll notice some tests have a strike-through effect.  The unit test explorer is telling us that it can’t find the AddBread01 and AddFlavoring01 unit tests, among others.  We do have AddBread02 and AddFlavoring02 though.  Why? Some of the unit tests are dropped from the test project when a Pex Exploration is called to run (by you).  Refreshing the test session shows the correct state of our test project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_4.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="148" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_8.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="138" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_thumb_3.png" width="324" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;If your test projects are being versioned, you’ll see quite a few checkouts when you are working with the Pex test projects.  If you are on  team where devs are building their own tests as they build up their code,  they probably won’t have a problem creating new , or updating existing, test projects separately.   Our shop will probably take the approach to build a separate Pex project for each logical or physical layer or project.  At this time, we’ll probably just focus on the non-visual layers.  And work out any kinks with multiple devs working in and around the same layers.  The lower layers may remain static, while the higher layers may shift a bit during later iterations or refactoring exercises.&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: 'Courier New', courier, monospace; background-color: #f4f4f4; text-align: left"&gt;   &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// &amp;lt;copyright file="CreamyLayerManagerTest.AddBread.g.cs" company="Microsoft"&amp;gt;Copyright © Microsoft 2009&amp;lt;/copyright&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// &amp;lt;auto-generated&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// This file contains automatically generated unit tests.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Do NOT modify this file manually.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// When Pex is invoked again,&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// it might remove or update any previously generated unit tests.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// If the contents of this file becomes outdated, e.g. if it does not&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// compile anymore, you may delete this file and invoke Pex again.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;// &amp;lt;/auto-generated&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you’ve worked with Silverlight you’re familiar with classes the come in pairs: {Classname}.g.cs and {ClassName}.cs.  The “g” denotes a generated file, and Pex generates PUTs for us, so they are also included in our project as well.  And as such, the Pex author graciously tells us if we muck around with the generated (g.cs) file we are wasting our time.  Much like the EntLib source code and unit tests I read a while back, there’s some interested things that show up in them from time to time, so reading is cool.  Just don’t waste your time trying to tweak them.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: 'Courier New', courier, monospace; background-color: #f4f4f4; text-align: left"&gt;
  &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// &amp;lt;copyright file="CreamyLayerManagerFactory.cs" company="Microsoft"&amp;gt;Copyright © Microsoft 2009&amp;lt;/copyright&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Pex.Framework;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; PeanutButter.Business.Facade.Creamy;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; PeanutButter.Business.Entities.Enums;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; PeanutButter.Business.Facade.Creamy&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; CreamyLayerManagerFactory&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        [PexFactoryMethod(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(CreamyLayerManager))]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; CreamyLayerManager Create(Bread bread_i)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            CreamyLayerManager creamyLayerManager = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CreamyLayerManager();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            creamyLayerManager.AddBread(bread_i);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; creamyLayerManager;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #008000"&gt;// TODO: Edit factory method of CreamyLayerManager&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #008000"&gt;// This method should be able to configure the object in all possible ways.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #008000"&gt;// Add as many parameters as needed,&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #008000"&gt;// and assign their values to each field by using the API.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Here’s the factory that Pex wanted us to create.  The job of this object is to spit out a CreamLayerManager when asked – it’s a factory and that’s what they do.&lt;/p&gt;

&lt;p&gt;Notice the file header, not a .g.cs so we have a full and creative license to work inside this file without any worries of having it regenerated.   One thing to note here.   If your factory spits out something that’s not quite right, you’ll have to figure that out.  Pex will begin to act a bit funny if it’s expecting a shoe object and you give it a skateboard object.  It’s your responsibility to ensure that the factory is providing the correct objects that are configured properly.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_14.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px; border-right-width: 0px" height="33" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_thumb_6.png" width="240" border="0" /&gt;&lt;/a&gt;Further down in the factory class (from above) we see a message from the author  that let’s us know that we need to sort out this object.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;The TODO also states that the object needs to be configured in all possible ways.  So if you’re building a shoe object, make sure it has has shoe laces if it calls for them.  The managers in the exercise are pretty boring.  The don’t have any internal state to manage, but some manager objects may.  There could be public members that need to be setup before Pex asks the object to do any work.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Right now Pex isn’t finding anything else that needs to be done.  Our CreamyLayer manager is coded and covered; our CrunchyLayer is throwing NotImplemented.  And all of our tests are green.  If you think back, our LayerManagers implement IBusinessLayer and we didn’t get a factory for the Crunchy Layer.  We’ll see if we can make that happen.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_26.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="253" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_thumb_12.png" width="597" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;I’ve changed the CrunchyLayer implementation and see what affect that has.  Most notable is that the default constructor is private and the (public) overloaded version must be doing something different.  The constructor is calling a private method to configure the Sandwich object.  I’m basically hard-coding a very large sandwich with a lot of peanut butter.&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: 'Courier New', courier, monospace; background-color: #f4f4f4; text-align: left"&gt;
  &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; CrunchyLayerManager : IBusinessLayerManager&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Sandwich Sandwich { get; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; CrunchyLayerManager(Sandwich sandwich)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        ConfigureSandwich(sandwich);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; CrunchyLayerManager()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ConfigureSandwich(Sandwich sandwich)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        sandwich.Slices = 4;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        sandwich.Toasted = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        sandwich.Layers = 4;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        sandwich.Topping = Topping.MorePeanutButter;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        sandwich.BreadSlices = 4;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Sandwich = sandwich;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #008000"&gt;// ...&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color="#e7e7e7"&gt;Let’s see what Pex has to say about the changes.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_22.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="142" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_thumb_10.png" width="595" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; We’ll first of all the “g.cs” generated files are expecting a public constructor with no arguments, not the one I supplied.&lt;/p&gt;

&lt;p&gt;So at this point, it’s safe to say that if we regenerated, the CreamyLayer manager test won’t change, but the CrunchyLayer tests will.  Re-running Pex Explorations &lt;strong&gt;without fixing the build&lt;/strong&gt;.  Pex will run against the broken build.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_24.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="242" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart4_74DE/image_thumb_11.png" width="454" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;And it does.  We have some tests that are passing, but some failed tests have shown up.  We can use the Pex Explorer Results window at the bottom of the IDE to see what happened.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;We’ll start here next time.  Until then.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132423"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132423" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/132423.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/05/26/flex-your-pex-part-4.aspx</guid>
            <pubDate>Tue, 26 May 2009 14:50:44 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/132423.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/05/26/flex-your-pex-part-4.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/132423.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Flex Your Pex (Part 3)</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/05/20/flex-your-pex-part-3.aspx</link>
            <description>&lt;p&gt;I’ve refactored part of the project and removed the generic methods, and added in a few new public methods to illustrate building a real sandwich.&lt;/p&gt;  &lt;p&gt;To keep the example a bit realistic, I’m leaving the Crunchy layer in a rougher state and building up the Creamy layer.  I’m not a big fan of crunchy peanut butter sandwiches, but in a pinch it will do.  Pressing on.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Our solution looks like this now.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_2.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_4.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I’ve asked Pex to go back through the solution and hook up PUTs for me.  One notable thing to mention here about rerunning Pex Explorations.   During my refactoring I broke the contract between the facade manager PUTs that Pex had already created.   And Pex said, “So what!”  So the solution would not build, because of this, but the facade library would build – your code needs to build.  Pex will try to regenerate what it needs on its own during the Exploration process.  &lt;/p&gt;  &lt;p&gt;In some cases there was code that I could have corrected (namespaces, etc.) and in some cases I did, but in some cases I dropped the test project and stepped back through the previous steps we’ve covered to rebuild the PUT project.  &lt;/p&gt;  &lt;p&gt;In the project I was first testing Pex with, I did this a few times and it was not a big deal, especially since I had my PUTs versioned in a source control system.&lt;/p&gt;  &lt;p&gt;Here’s what the Pex Explorer looks like now, the Crunchy layer methods are throwing NotImplemented exceptions right now.  We’ll deal with those as well but not right now.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_6.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="246" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_2.png" width="336" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The Pex Explorer has a different view of things now as well.  The ctor for the CreamyLayerManager is the “target”, and Bread.Wheat (an enum) is being passed in to the manager’s AddBread method.  The “Details” text box is displaying the AddBread01 test method and how the target is being created and the methods being called on it.  &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_10.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="201" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_4.png" width="604" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;This dialog shows us a few other things as well.  Beneath the test method details we have a “Save Test…” button which corresponds to the icon in the far left grid’s gutter.  That icon means we have a new test, that needs to be saved.  And yes, you’ll get used to that.  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Additionally, we have a visual prompt for “1 Object Creation”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_14.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="223" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_6.png" width="613" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;  &lt;/p&gt;  &lt;p&gt;Pex wants to help us stub out a factory to create this particular layer manager.  When we click the Accept (if it’s new) / Edit (if it’s not) button Pex will prompt to tell us it’s about to alter our PUT project, like this.  Very cool – no surprises, right!?  Clicking “Apply”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_20.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="409" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_9.png" width="614" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Pex Exploration Results change to tell us (visually) something good has happened, and the Factory has been added and we should be looking at it in our code editor, which we are.  This is the type of behavior that Pex is delivering, so you don’t get lost and can follow what’s going on.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_22.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="367" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_10.png" width="626" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; At this point, I’m going to add all of the other factories Pex may have suggested as well as the other test methods that need to be saved.&lt;/p&gt;  &lt;p&gt;Remember the methods that were throwing exceptions, well those come into play now as well.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_26.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="171" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_12.png" width="647" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; A few things to note with this exploration, the test is still passing in a “wheat” argument like the other method that’s not throwing, but Pex has picked up on the fact that it is throwing something intentionally.   The test still needs to be saved, and the exception still needs to be allowed.   &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;In a better scenario, when may have a guard condition on an argument when it’s passed in.  If it was null, we could throw if it ways.  In this scenario Pex would setup a test that allows for this scenario to happen and would build up a PUT with a null argument so we can get coverage on that part of the code block.  On a live project, you might have these laying around, and it’s perfectly fine.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Clicking “Allow Exception” looks like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_28.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="411" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_13.png" width="664" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The tests that are expecting to throw are just like all other tests that throw.  The point is just to make Pex aware so when I come back to flesh out these types, the PUTs will change based on my changes, but because of Pex’ interaction.  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;My test runner (xUnit) is telling us the same stuff Pex told us.  These will stay in the red stage until we’re ready make them green.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_30.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="195" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart3_91FE/image_thumb_14.png" width="656" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Before I close on this one, I wanted remind everyone again that I did have to regenerate my PUT project a couple of times over the course of setting up the PUT project and refactoring my code since this is a new Pex build.  This probably won’t happen now that most of the groundwork is laid, and we’ll work more with Pex, and less with the source code.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Until then.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132312"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132312" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/132312.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/05/20/flex-your-pex-part-3.aspx</guid>
            <pubDate>Wed, 20 May 2009 20:41:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/132312.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/05/20/flex-your-pex-part-3.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/132312.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Flex Your Pex (Part 2)</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/05/19/flex-your-pex-part-2.aspx</link>
            <description>&lt;p&gt;After cleaning up the “Not Implemented Exception” throws in the concrete class implementations of IBusiness Manager, Pex delivered a set of PUTs for each layer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_2.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="179" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_thumb.png" width="244" align="right" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Here’s the details in the Pex Exploration window.  Notice the disk in the lower right hand of the icon in the far left gutter, we have  a new test.  Each new test will have that, telling us we need to save it.  If it’s an update to the PUT, then we’ll just have the sunburst in the upper left hand corner.   The other visual queue is under the “Details” rich text box… “Save Test…”  Clicking “Save Test…” generates a new dialog that tells us what Pex is about to do to our PUT project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image4.png" rel="lightbox"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="178" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image4_thumb.png" width="600" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; Pex is *very* good about telling us what he’s going to do to our projects and PUTs, so this type of dialog is going to get very familiar, unless you tick the “Do not show this dialog  in the future” checkbox.  I would let it pop until you get used to Pex and you’ve moved through at least one set of your examples to see what Pex can do, and is doing, for your PUTs.  After we click “Apply” we get a summary of each successful or unsuccessful step. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_6.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="331" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_thumb_2.png" width="427" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Now, were have a test method that was previewed in the dialog above.   Notice the green check mark icon as well.  This test is  part of the Pex test project now.  Well do the same for the rest of the new tests, individually.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_8.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="311" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_thumb_3.png" width="548" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The unit test explorer looks like this now:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_10.png" rel="lightbox"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="278" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_thumb_4.png" width="551" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Our unit test base line looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_12.png" rel="lightbox"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="328" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart2_FCB0/image_thumb_5.png" width="562" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;We have some very boring code.  We need to pass in something to Add, Remove, and Update so we can see some of the other Pex features, and how Pex’ behavior changes based on your code structure.  That’s next.  &lt;/p&gt;  &lt;p&gt;Until then.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132271"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132271" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/132271.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/05/19/flex-your-pex-part-2.aspx</guid>
            <pubDate>Tue, 19 May 2009 15:19:30 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/132271.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/05/19/flex-your-pex-part-2.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/132271.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Flex Your Pex (Part 1)</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/05/16/flex-your-pex-part-1.aspx</link>
            <description>&lt;div id="codeSnippetWrapper"&gt;Pex has had two updates, one since I first used it, and one after I finished using it.  Here’s the release notes for the latest build that dropped on 5/1/2009.  Fresh install, and rewinding back through the project I had referenced in my first post.  This time I need to build a different project that doesn’t reference my day job and also how well things work with xUnit.  &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_4.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="273" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_1.png" width="240" align="left" border="0" /&gt;&lt;/a&gt;The install was perfect again, no issues with that so far.  Here are the &lt;a href="http://research.microsoft.com/en-us/projects/pex/releasenotes.aspx"&gt;release notes&lt;/a&gt;, and a few steps setting up a new project.  I’m just going to start a new project and start from scratch and buzz through the same examples I worked through previously.  Here’s the new project setup.  &lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Now that I’ve got a new project to work against, we can generate the Pex test project and ask Pex to get busy.  First we’ll ask Pex to create a new &lt;a href="http://xunit.codeplex.com/"&gt;xUnit&lt;/a&gt; test project.  Right-clicking the Facade project exposes the context menu, we’ll choose “Create Parameterized Unit Test Stubs”, aka PUTs.  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;This gives us the following dialogs to set our project properties.   I’ll leave the blanks blank, those exist to filter the namespace, type name, and method names you want to filter for the project under test. We want all of them, so they’ll be left blank.  &lt;/p&gt;  &lt;p&gt;A variation on this is if you open the context menu inside the class file.  The filter fields are filled in for you to limit Pex’ interaction.&lt;/p&gt;  &lt;p&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_10.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="236" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_4.png" width="440" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_8.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="237" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_3.png" width="443" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Here are the settings I’ve chosen, I’m going with xUnit this time around.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_12.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="143" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_5.png" width="280" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_14.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="227" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_6.png" width="283" align="left" border="0" /&gt;&lt;/a&gt;The “Settings…” dialog is where I tell Pex that for all unit tests created, each will have the PexTest suffix.&lt;/p&gt;  &lt;p&gt;"Mark all test results Inconclusive by default" - This setting will add the Assert.Inconclusive() assertion at the bottom of the test method which is the default for all Visual Studio unit tests when they are generated in the IDE.&lt;/p&gt;  &lt;p&gt;"Globally qualify all types" - This setting will prefix all fields in the test class with &lt;a href="http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx"&gt;global qualifier&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;"Use Code Patterns" - Pex utilizes many different code patterns which are beyond the scope of this document. You can find them in this document's appendix.&lt;/p&gt;  &lt;p&gt;"Generate Stubs file for project under test" - The Stubs Framework utilized by Pex is explained by one of the authors &lt;a href="http://blog.dotnetwiki.org/PexGetsAStubsFrameworkISaidStubsNotMocks.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We click OK on the settings dialog.  We click OK on the main dialog, and Pex shows us the dialog pictured below.  We’re getting a unit test project called …\ProjectName.Tests (plural suffix);  now is your only chance to move this project around.  If you like to keep your unit test libraries somewhere else besides the project it’s testing move it to that place.  The MSTest dialog gives us a singular suffix.  So if you have both, this might help you keep them apart.  Hopefully they will allow us to (re)label them in future versions of Pex.&lt;/p&gt;  &lt;p&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_16.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="255" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_7.png" width="720" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click OK.&lt;/p&gt;  &lt;p&gt;If Pex can’t find your test runner, you’ll be prompted for the location.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_18.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_8.png" width="436" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt;Here are the new pieces Pex has added.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_22.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="345" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_10.png" width="220" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt;A few things to notice here. We get one Pex class for each of our classes so the test methods are segregated neatly. The point to make here is to get everything neat before you generate the test project.  Also, notice the suffix, "PexTest". We can't rename the class library suffix, so I chose to rename the class files so I know by looking at the project members which classes are mine, and which ones were generated by Pex. Also, the stub file mentioned previously is generated for us.&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_24.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="157" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_11.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Here’s what Reflector can show us about what was created as well, the crunchy layer looks pretty much identical to the Crunchy layer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_26.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="458" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_12.png" width="571" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 66.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: 'Courier New', courier, monospace; height: 210px; background-color: #f4f4f4; text-align: left"&gt;   &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; PeanutButter.Business.Facade.Creamy&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;This class contains parameterized unit tests for CreamyLayerManager&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    [PexClass(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(CreamyLayerManager))]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    [PexAllowedExceptionFromTypeUnderTest(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(InvalidOperationException))]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    [PexAllowedExceptionFromTypeUnderTest(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ArgumentException), AcceptExceptionSubtypes = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; CreamyLayerManagerPexTest&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;Test stub for Add(!!0)&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        [PexGenericArguments(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;))]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        [PexMethod]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Add&amp;lt;T&amp;gt;([PexAssumeUnderTest]CreamyLayerManager target, T entityToAdd)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #008000"&gt;// TODO: add assertions to method CreamyLayerManagerPexTest.Add(CreamyLayerManager, !!0)&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            target.Add&amp;lt;T&amp;gt;(entityToAdd);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;Test stub for Remove(!!0)&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        [PexGenericArguments(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;))]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        [PexMethod]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Remove&amp;lt;T&amp;gt;(&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            [PexAssumeUnderTest]CreamyLayerManager target,&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            T entityToRemove&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        )&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #008000"&gt;// TODO: add assertions to method CreamyLayerManagerPexTest.Remove(CreamyLayerManager, !!0)&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            target.Remove&amp;lt;T&amp;gt;(entityToRemove);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;Test stub for Update(!!0)&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        [PexGenericArguments(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;))]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        [PexMethod]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Update&amp;lt;T&amp;gt;(&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            [PexAssumeUnderTest]CreamyLayerManager target,&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            T entityToUpdate&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        )&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #008000"&gt;// TODO: add assertions to method CreamyLayerManagerPexTest.Update(CreamyLayerManager, !!0)&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            target.Update&amp;lt;T&amp;gt;(entityToUpdate);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;The only Source Analysis violation are related to moving the using statements inside the namespace declaration and the adding the method arguments to the summary block. Source and Code Analysis compliance was one of the latest features added to the Pex release in use.&lt;/p&gt;

&lt;p&gt;Notice the method decoration "[PexMethod]" This method won't be visible to the xUnit test outline since unit tests are reference by the FactAttribute. If it would have been decorated with "[Fact]" it would.  Also notice Pex methods are parameterized (PUTs) tests.  The xUnit methods will be generated from, and by, the PUTs. &lt;/p&gt;

&lt;p&gt;The PexMethod(s) will be used during the Pex Exploration we will step through now.  Right-clicking the test project exposes the Pex Exploration menu item which starts the exploration process.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_30.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_14.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Pex Exploration finishes and the Pex Explorer tells us we have some problems - all of my methods are throwing NotImplementedExceptions” - nice.  &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_32.png" rel="lightbox"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="201" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPexPart1_B4CD/image_thumb_15.png" width="351" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;I’ll stop here, fix my code and pick-up with an Exploration exercise to allow Pex to do something meaningful with my test project. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; Until then.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132156"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132156" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/132156.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/05/16/flex-your-pex-part-1.aspx</guid>
            <pubDate>Sat, 16 May 2009 19:37:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/132156.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/05/16/flex-your-pex-part-1.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/132156.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Flex Your Pex!</title>
            <link>http://geekswithblogs.net/onefloridacoder/archive/2009/05/09/flex-your-pex.aspx</link>
            <description>&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPex_10980/PexLogo_thumb_2.png"&gt;&lt;img title="PexLogo_thumb" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT-WIDTH: 0px" height="129" alt="PexLogo_thumb" width="208" align="right" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/onefloridacoder/WindowsLiveWriter/FlexYourPex_10980/PexLogo_thumb_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;I recently took the Pex framework for a test drive and spent a few weeks off and on trying to make sense of it all.  Lots of promise with this framework, and I bought into it all – I really like to test my code, but writing code to cause a framework to generate the tests sounded cool.  Yet another shiny thing in the world of testing – I know.&lt;/p&gt;
&lt;p&gt;I first saw this running at a PnP Summit last November and just recently got to put it in play, and while I was waiting a few new builds dropped that made things a bit easier.&lt;/p&gt;
&lt;p&gt;I wrote a really nice document, for my own shop which makes sense if you knew the project I was working on.  I’m going to decompose the document and publish that in chunks that make sense.&lt;/p&gt;
&lt;p&gt;I barely tapped the full capacity of this tool, but to give you an idea of what how well it work, here are a few stats I can share.&lt;/p&gt;
&lt;p&gt;I was working with 17 facade classes with a total of 750 Blocks (per Visual Studio Code Coverage) and covered 92% of them.  Yes, it took a while, and there was slight curve but there’s a ton of documentation to help out.  This is well worth investigating, you won’t be sorry.&lt;/p&gt;
&lt;p&gt;Check back for the installments.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131924"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131924" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/onefloridacoder/aggbug/131924.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>onefloridacoder</dc:creator>
            <guid>http://geekswithblogs.net/onefloridacoder/archive/2009/05/09/flex-your-pex.aspx</guid>
            <pubDate>Sat, 09 May 2009 17:18:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/onefloridacoder/comments/131924.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/onefloridacoder/archive/2009/05/09/flex-your-pex.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/onefloridacoder/comments/commentRss/131924.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>