<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.brianlegros.com/blog/wp-atom.php">
	<title type="text">what do I know</title>
	<subtitle type="text">my unintelligible thoughts on code and food</subtitle>

	<updated>2008-11-21T20:29:09Z</updated>
	<generator uri="http://wordpress.org/" version="2.6.3">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://www.brianlegros.com/blog" />
	<id>http://www.brianlegros.com/blog/feed/atom/</id>
	

			<link rel="self" href="http://feeds.feedburner.com/brianlegros" type="application/atom+xml" /><entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Niki&#8217;s Rainbow Restaurant - Satelitte Beach, FL]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/461132924/" />
		<id>http://www.brianlegros.com/blog/?p=287</id>
		<updated>2008-11-21T20:26:00Z</updated>
		<published>2008-11-21T20:24:15Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="food" /><category scheme="http://www.brianlegros.com/blog" term="greek" /><category scheme="http://www.brianlegros.com/blog" term="mediterranean" /><category scheme="http://www.brianlegros.com/blog" term="review" /><category scheme="http://www.brianlegros.com/blog" term="satellite beach" />		<summary type="html"><![CDATA[A friend of mine has been mentioning Niki&#8217;s Rainbow Restaurant to me for some time now.  I always pass by it when I&#8217;m beachside and, no matter what time of day I go by, the parking lot is always full.  Make no confusion however, even though they share the shopping plaza with a [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/11/21/nikis-rainbow-restaurant-satelitte-beach-fl/">&lt;p&gt;A friend of mine has been mentioning Niki&amp;#8217;s Rainbow Restaurant to me for some time now.  I always pass by it when I&amp;#8217;m beachside and, no matter what time of day I go by, the parking lot is always full.  Make no confusion however, even though they share the shopping plaza with a few other places, Niki&amp;#8217;s is the reason that lot is full.&lt;/p&gt;
&lt;p&gt;So that same friend, another friend, and I all met up for lunch today at Niki&amp;#8217;s eagerly anticipating our pending meal.  The menu is a simple three page menu chocked full of choices, even for those who aren&amp;#8217;t partial to Greek options, but my eyes shot right to the &amp;#8220;Rainbow&amp;#8217;s Grecian Special&amp;#8221; section.  All of the expected favorites are present, so I was worried that my choice would be really tough and I&amp;#8217;d end up ordering more food than I probably should.  That is, until I spotted the Combo Platter (~$11).  The Combo Platter comes with a portion of gyro, spinach pie, 2 grape leaves, pita bread, and your choice of soup or a Greek salad; I went with the soup of the day (New England Clam Chowder).  The soup came out first with a basket of yeast rolls and crackers.  The rolls were nice and light and the soup was thick and hardy with big chunks of clam.  Before I could even finish my soup, the meals were on the table.  The gyro was topped with a generous dolip of tzatziki and was homemade.  Usually tzatziki is a little too creamy for me, but the way it was made was the perfect balance of yogurt to cucumber/garlic/lemon/oil/etc.  The gyro was sliced straight off of the rotisserie spit and, not surprisingly, tasted great; not too salty or seasoned and also, homemade.  The spinach pie was layered, flaky pastry crust with spinach and feta and for a change actually had more spinach than cheese which I enjoyed (and also homemade).  The grape leaves were different from what I expected in that they were stuffed with ground beef and rice rather than just rice, but were delicious.  If you&amp;#8217;ve read my previous reviews, I&amp;#8217;m not a fan of grape leaves that haven&amp;#8217;t been slow cooked or that are tough.  Niki&amp;#8217;s grape leaves were so tender, that I was able to cut them with a fork; just awesome quality (did I mention homemade?).  Even the pita was out of control good, not dry and more like a flat bread, it&amp;#8217;s the only thing that Niki&amp;#8217;s brings in.  According to our waitress, it can&amp;#8217;t even be bought anywhere but Niki&amp;#8217;s which has an exclusive deal with the distributor.  At ~$2 for a side of the pita bread, you may find yourself with an order to take home.  &lt;/p&gt;
&lt;p&gt;Also at the table we had a gyro sandwich (~$7) with fries (~$2) and a falafel platter (~$10) which came with fries and a greek salad.  The gryo sandwich was made with that great pita bread, tomato, onion, and tzatziki.   The falafel was put together simliarly and the chick peas were fried locking in the moisture which was nice to see since usually falafels tend to be dry.  And if all of that food wasn&amp;#8217;t enough to get your appetite going, we also stayed to try the baklava (~$3).  &lt;/p&gt;
&lt;p&gt;Now &lt;a href="http://www.brianlegros.com/blog/2008/04/13/cedars-cafe-melbourne-fl/"&gt;Cedar&amp;#8217;s&lt;/a&gt; makes a killer baklava and I have to say I preferred it over Niki&amp;#8217;s.  That being said it&amp;#8217;s a different style of baklava and good in its own right.  Niki&amp;#8217;s baklava seems to be made in the traditional sense but is more doughy than flaky.  It comes topped with a sweet sauce which tasted like a mixture of honey and citrus and is super tasty.  I&amp;#8217;m not saying I wouldn&amp;#8217;t order it again, it&amp;#8217;s just not my favorite.&lt;/p&gt;
&lt;p&gt;If you noticed a theme, it&amp;#8217;s because there is one &amp;#8230; homemade food.  Everything but the pita bread is made daily from scratch.  In addition to all of that homemade food, our waitress was on top of everything; our drinks were always full and our food spent almost no time between the kitchen and our table.  Our waitress was even kind enough take time to tell us a little about the food and the restaurant.  In summary: excellent service, homemade, hot food, and a must visit.  In fact, I&amp;#8217;m going to go as far to say that Niki&amp;#8217;s Rainbow Restaurant is now my new favorite Greek/Mediterranean restaurant in the Brevard area.  Not only is the food amazing, but the work placed into each meal makes it that much better.&lt;/p&gt;
&lt;p&gt;Niki&amp;#8217;s Rainbow Restaurant is located at &lt;a href="http://maps.google.com/maps?hl=en&amp;#038;q=niki%27s+rainbow+restaurant+satellite+beach,+fl&amp;#038;oe=UTF-8&amp;#038;ie=UTF8&amp;#038;cd=1&amp;#038;ll=28.209424,-80.595703&amp;#038;spn=0.079418,0.181961&amp;#038;z=13&amp;#038;iwloc=A"&gt;570 Highway A1A, Satellite Beach, FL&lt;/a&gt;.&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/food/" title="food" rel="tag"&gt;food&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/greek/" title="greek" rel="tag"&gt;greek&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/mediterranean/" title="mediterranean" rel="tag"&gt;mediterranean&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/review/" title="review" rel="tag"&gt;review&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/satellite-beach/" title="satellite beach" rel="tag"&gt;satellite beach&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=B8dYN"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=B8dYN" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/11/21/nikis-rainbow-restaurant-satelitte-beach-fl/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/11/21/nikis-rainbow-restaurant-satelitte-beach-fl/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/11/21/nikis-rainbow-restaurant-satelitte-beach-fl/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Long Doggers - Melbourne, FL]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/459008919/" />
		<id>http://www.brianlegros.com/blog/?p=175</id>
		<updated>2008-11-20T00:58:14Z</updated>
		<published>2008-11-20T00:58:14Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="food" /><category scheme="http://www.brianlegros.com/blog" term="american" /><category scheme="http://www.brianlegros.com/blog" term="hotdog" /><category scheme="http://www.brianlegros.com/blog" term="melbourne" /><category scheme="http://www.brianlegros.com/blog" term="review" /><category scheme="http://www.brianlegros.com/blog" term="seafood" />		<summary type="html"><![CDATA[When I first moved to Brevard, I wondered what it would be like living near the coast and, of course being a crazed foodie, what would I think of as the quintessential eatery after a few years.  After living in the area a few years now the answer to that question stares me in [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/11/19/long-doggers-melbourne-fl/">&lt;p&gt;When I first moved to Brevard, I wondered what it would be like living near the coast and, of course being a crazed foodie, what would I think of as the quintessential eatery after a few years.  After living in the area a few years now the answer to that question stares me in the face every time I pass one of Long Doggers&amp;#8217; locations.  &lt;a href=" http://www.longdoggers.com/"&gt;Long Doggers&lt;/a&gt; is what my wife and I consider a solid place for lunch.  We usually hit up the Post Road location, but the South Patrick and Indialantic locations are also really great.  No matter which location you hit up, the atmosphere reflects the lay back, beach going lifestyle of the coast with a definite focus on surfing.&lt;/p&gt;
&lt;p&gt;One of the best parts of Long Doggers is its simple and fresh &lt;a href="http://www.longdoggers.com/menu.html"&gt;menu&lt;/a&gt;.  This time around we ordered the Regular Dog Day Platter (~$4) and the Dolphin Reuben (~$8), a sweet tea (~$2), and a water.  The Dog Day Platter comes with your choice of regular or foot long hotdog (+$1), a pickle, coleslaw, and a choice of side; we opted for the onion rings.  The Dolphin Reuben is a generously portioned Mahi fillet served in a white bun with sauerkraut and thousand-island dressing along side coleslaw and a pickle.  As always our meals came out hot and were delicious.  As an added plus, Long Doggers&amp;#8217; seafood options are just great;  I especially enjoy the Grilled Tuna Sandwich seared rare (~$8).  We haven&amp;#8217;t tried the entrees before, but I&amp;#8217;ve heard good things about them as well.&lt;/p&gt;
&lt;p&gt;As with most places we frequent, the staff is attentive and accommodating.  They&amp;#8217;ve always got some type of surfing video running on the TV and have outdoor and indoor seating available.  If you&amp;#8217;re looking for a reliable place for casual eats, look no further than Long Doggers.  You&amp;#8217;ll find lots of locals and tasty food; hell, it&amp;#8217;s such a staple you&amp;#8217;ll probably find yourself buying a t-shirt after a couple visits.&lt;/p&gt;
&lt;p&gt;Long Doggers in North Melbourne is located at &lt;a href="http://maps.google.com/maps?f=q&amp;#038;hl=en&amp;#038;geocode=&amp;#038;q=long+doggers,+melbourne,+fl&amp;#038;ie=UTF8&amp;#038;cd=1&amp;#038;ll=28.181284,-80.670805&amp;#038;spn=0.033213,0.080338&amp;#038;z=14&amp;#038;iwloc=D"&gt;2870 Post Rd, Melbourne, FL&lt;/a&gt;.&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/american/" title="american" rel="tag"&gt;american&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/food/" title="food" rel="tag"&gt;food&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/hotdog/" title="hotdog" rel="tag"&gt;hotdog&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/melbourne/" title="melbourne" rel="tag"&gt;melbourne&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/review/" title="review" rel="tag"&gt;review&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/seafood/" title="seafood" rel="tag"&gt;seafood&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=wAiXN"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=wAiXN" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/11/19/long-doggers-melbourne-fl/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/11/19/long-doggers-melbourne-fl/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/11/19/long-doggers-melbourne-fl/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Little Phillies - Satellite Beach, FL]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/455574992/" />
		<id>http://www.brianlegros.com/blog/?p=274</id>
		<updated>2008-11-19T13:36:44Z</updated>
		<published>2008-11-17T04:46:13Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="food" /><category scheme="http://www.brianlegros.com/blog" term="american" /><category scheme="http://www.brianlegros.com/blog" term="satellite beach" />		<summary type="html"><![CDATA[Every now and then, the healthy side of me is placed into submission while the side of me that needs good old greasy, fried food takes over.  It&#8217;s been a few weeks now and my body is started to revolt, so I figured I&#8217;d have one last hurrah before getting back into the swing [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/11/16/little-phillies-satellite-beach-fl/">&lt;p&gt;Every now and then, the healthy side of me is placed into submission while the side of me that needs good old greasy, fried food takes over.  It&amp;#8217;s been a few weeks now and my body is started to revolt, so I figured I&amp;#8217;d have one last hurrah before getting back into the swing of cooking at home.  Over the last few months, signs for &lt;a href="http://www.littlephillies.com/"&gt;Little Phillies&lt;/a&gt; have been popping up on the mainland and beach-side, so I figured cheesesteaks would be a good choice to finish out my feeding frenzy.&lt;/p&gt;
&lt;p&gt;Little Phillies&amp;#8217; is located where Kimberly Plaza used to be, from what my wife tells me, hidden in a small plaza North of 7-Eleven and south of the Pineda Causeway on A1A.  This new location is quite the step up from the lunch cart that the owner was running prior to opening the restaurant.  From what the guy working the counter told us, on busy days, they were selling 200 cheesesteaks road-side and the volume was just too much for the Amaco next to &lt;a href="http://www.brianlegros.com/blog/2008/04/04/oasis-shaved-ice-beachside-satellite-beach-fl/"&gt;Oasis Shaved Iced&lt;/a&gt;, so they opened the new place.  Even though I didn&amp;#8217;t get a chance to swing by the cart, Little Phillies keeps the back to basics feel and does it well.&lt;/p&gt;
&lt;p&gt;The group ended up splitting two of the large Authenticate Cheesesteaks (~$9 each) with an order of fries (~$2) and onion rings (~$3) and a couple of sodas (~$2 each).  Each cheesesteak comes stocked with chopped ribeye and the option to add grilled onions, bell pepper (~$0.50), or mushroom (~$0.75) as well as your choice of cheese (provolone, american, or cheesewiz).  The fries and onion rings were not at all greasy, were served hot, and tasted great.  The cheesesteaks were served hot and are definitely big enough to split.  If you have a larger appetite, they offer an X-Large size (~$11) as well as a 1 lb. of steak option (~$12).  Chicken and buffalo chicken cheesesteak options are also available along with a slew of subs and fried sides.  We didn&amp;#8217;t try dessert, but Italian ice and cheesecake bites are also available.&lt;/p&gt;
&lt;p&gt;The staff is friendly and the joint can definitely make a good cheesesteak.  If you&amp;#8217;re looking to try out a recent addition to the Brevard casual dining scene, look no further than Little Phillies.  Sometimes restaurants can get complicated with all they try to do to attract customers when all they really need to do is focus on the food.  +1 for Little Phillies for getting it right.&lt;/p&gt;
&lt;p&gt;Little Phillies is located at &lt;a href="http://maps.google.com/maps?f=q&amp;#038;hl=en&amp;#038;geocode=&amp;#038;q=little+phillies+satellite+beach,+fl&amp;#038;sll=28.2095,-80.598192&amp;#038;sspn=0.010268,0.019312&amp;#038;g=190+Highway+A1A+satellite+beach,+fl&amp;#038;ie=UTF8&amp;#038;ll=28.219105,-80.598278&amp;#038;spn=0.082133,0.154495&amp;#038;z=13&amp;#038;iwloc=A"&gt;190 Highway A1A, Satellite Beach, FL&lt;/a&gt;.&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/american/" title="american" rel="tag"&gt;american&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/food/" title="food" rel="tag"&gt;food&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/satellite-beach/" title="satellite beach" rel="tag"&gt;satellite beach&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=lRCRN"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=lRCRN" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/11/16/little-phillies-satellite-beach-fl/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/11/16/little-phillies-satellite-beach-fl/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/11/16/little-phillies-satellite-beach-fl/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Mock objects and AS3 : Now I really don&#8217;t want to use explicit typing]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/431805938/" />
		<id>http://www.brianlegros.com/blog/?p=262</id>
		<updated>2008-10-25T16:02:22Z</updated>
		<published>2008-10-25T16:02:22Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="programming" /><category scheme="http://www.brianlegros.com/blog" term="actionscript" /><category scheme="http://www.brianlegros.com/blog" term="cglib" /><category scheme="http://www.brianlegros.com/blog" term="flex" /><category scheme="http://www.brianlegros.com/blog" term="flexcoders" /><category scheme="http://www.brianlegros.com/blog" term="mock-as3" /><category scheme="http://www.brianlegros.com/blog" term="mock-objects" /><category scheme="http://www.brianlegros.com/blog" term="objecttranslator" /><category scheme="http://www.brianlegros.com/blog" term="proxy" /><category scheme="http://www.brianlegros.com/blog" term="stubs" />		<summary type="html"><![CDATA[So in my search for mock object libraries, I continue to run into frustration with explicit typing in ActionScript 3.  I did some searching and found a really great mock object library called mock-as3. It's an expectation based library, in its early stages, but surprisingly featured and intuitive.  Here are some usage examples [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/10/25/mock-objects-and-as3-now-i-really-dont-want-to-use-explicit-typing/">&lt;p&gt;So in my search for mock object libraries, I continue to run into frustration with explicit typing in ActionScript 3.  I did some searching and found a really great mock object library called &lt;a href="http://code.google.com/p/mock-as3/"&gt;mock-as3&lt;/a&gt;. It's an expectation based library, in its early stages, but surprisingly featured and intuitive.  Here are some &lt;a href="http://thefoundry.anywebcam.com/index.php/actionscript/mock-as3-released-a-mock-object-library-for-actionscript-3/"&gt;usage examples&lt;/a&gt; from the author.  &lt;/p&gt;
&lt;p&gt;I've been writing code in ActionScript using explicit types, like most everyone I know who uses AS3, so mock-as3 out of the box won't meet my needs.  If I wanted to begin using interface classes and stubbing out my mocks (as mentioned in the examples) I could, but I won't; the author even comments that it is extremely tedious to do and doesn't necessarily advocate it.  He hopes to have features in future versions of the library available to handle this but for now they are not available.  In general, implementing interfaces for all classes that I'd like to mock is something I don't agree with in any language.  I'm a believer that refactoring your code will make a use case for the use of a programmatic interface over time; there are explicit cases where they are useful, but in the case of mocking, I'm not a big fan.&lt;/p&gt;
&lt;p&gt;In any case, I did some thinking and wondered if there was a way to convert an object to a different type at runtime.  I figured it'd take some bytecode manipulation, but I'm new to the game, so others much have thought about this already I assumed.  Sure enough, I found an implementation by Darron Schall called &lt;a href="http://www.darronschall.com/weblog/archives/000247.cfm"&gt;ObjectTranslator&lt;/a&gt; which will convert an object's type at run-time.  I ran through some basic examples and everything worked as expected, so I thought, why not try to convert &lt;code&gt;Mock&lt;/code&gt;, which is the class used to mock an object, to the class type passed in at instantiation?  The implementation of &lt;code&gt;ObjectTranslator&lt;/code&gt; just switches a byte for the new class type and directly copies the bytes of the object into a new byte stream.  Worth a shot right?&lt;/p&gt;
&lt;p&gt;In mock-as3's implementation &lt;code&gt;Mock&lt;/code&gt; is a subclass of everyone's favorite class, &lt;code&gt;Proxy&lt;/code&gt;.  I did a basic test creating an expectation with the same name as the method in my class I wanted to mock and then used ObjectTranslator to convert the mock's type.  I then passed the typed mock to something to consume it and test to see if my expectations return value was given.  Below is a the code I wrote:&lt;/p&gt;
&lt;div class="syntax_hilite"&gt;
&lt;div id="actionscript-2"&gt;
&lt;div class="actionscript"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; mock : Mock = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; Mock&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; MyClass&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #0066CC;"&gt;trace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;describeType&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;mock&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;mock.&lt;span style="color: #006600;"&gt;method&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"method1"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;returns&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"PASS!"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #0066CC;"&gt;trace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;mock.&lt;span style="color: #006600;"&gt;method1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; newMock : MyClass = ObjectTranslator.&lt;span style="color: #006600;"&gt;objectToInstance&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;mock, MyClass&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #0066CC;"&gt;trace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;describeType&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;newMock&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; typedUsage : UsageClass = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; UsageClass&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;newMock&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #0066CC;"&gt;trace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;typedUsage.&lt;span style="color: #006600;"&gt;method1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;"PASS!"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Everything works except the final call to &lt;code&gt;trace()&lt;/code&gt; which shows &lt;code&gt;false&lt;/code&gt; because the value being returned is "FAIL!", which is the default value for the method in the class declaration.  I thought, well maybe I can add functionality to &lt;code&gt;Mock&lt;/code&gt; where on each call to &lt;code&gt;method()&lt;/code&gt; or &lt;code&gt;property()&lt;/code&gt; I will create a property on the mock with the same name of the property passed in and point it to &lt;code&gt;callProperty&lt;/code&gt; or &lt;code&gt;getProperty&lt;/code&gt; from Proxy.  &lt;code&gt;Mock&lt;/code&gt; is declared &lt;code&gt;dynamic&lt;/code&gt; after all.  I gave it a whirl but no luck, I'm guessing there is something special done with &lt;code&gt;Proxy&lt;/code&gt; that when I used ObjectTranslator, didn't come over.  There were also some properties used by &lt;code&gt;Mock&lt;/code&gt; that didn't come over because they were not part of the new type, specifically &lt;code&gt;expectations&lt;/code&gt;.  Since mock-as3 uses its internal reference to &lt;code&gt;expectations&lt;/code&gt; I was hoping I would get this for free, but it didn't work out from what I can tell.  Without a way to &lt;code&gt;eval()&lt;/code&gt; the code necessary to create a method signature matching the existing signature in the class declaration, I'm pretty much stumped.&lt;/p&gt;
&lt;p&gt;If anyone has any suggestions, I'm all for it, but I kinda threw up my hands and called it a day.  The more I play with ActionScript 3, the more it feels like the Flex community is going to have to produce things equivalent to &lt;a href="http://cglib.sourceforge.net/"&gt;CGLib&lt;/a&gt; to do anything flexible with ActionScript3 that is still type-safe (e.g. - mocks, AOP, etc).  It sounds like from a &lt;a href="http://tech.groups.yahoo.com/group/flexcoders/message/97443"&gt;thread on FlexCoders&lt;/a&gt; that the community really wants a Proxy#newProxyInstance method, so hopefully this will make &lt;code&gt;Proxy&lt;/code&gt; a little more useful.  I'm not sure, however, if they want to be able to instantiate &lt;code&gt;Proxy&lt;/code&gt; at run-time or be able to instantiate a formal target property from &lt;code&gt;Proxy&lt;/code&gt; of the target's type.  I'm hoping for the latter, but I'm still new to AS3, so who knows.  Back to stubs ...&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/actionscript/" title="actionscript" rel="tag"&gt;actionscript&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/cglib/" title="cglib" rel="tag"&gt;cglib&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/flex/" title="flex" rel="tag"&gt;flex&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/flexcoders/" title="flexcoders" rel="tag"&gt;flexcoders&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/mock-as3/" title="mock-as3" rel="tag"&gt;mock-as3&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/mock-objects/" title="mock-objects" rel="tag"&gt;mock-objects&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/objecttranslator/" title="objecttranslator" rel="tag"&gt;objecttranslator&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/proxy/" title="proxy" rel="tag"&gt;proxy&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/stubs/" title="stubs" rel="tag"&gt;stubs&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=y7jFM"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=y7jFM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/10/25/mock-objects-and-as3-now-i-really-dont-want-to-use-explicit-typing/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/10/25/mock-objects-and-as3-now-i-really-dont-want-to-use-explicit-typing/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/10/25/mock-objects-and-as3-now-i-really-dont-want-to-use-explicit-typing/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[ActionScript: Just different enough to piss you off]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/425777392/" />
		<id>http://www.brianlegros.com/blog/?p=245</id>
		<updated>2008-10-19T20:34:36Z</updated>
		<published>2008-10-19T20:34:36Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="programming" /><category scheme="http://www.brianlegros.com/blog" term="actionscript" /><category scheme="http://www.brianlegros.com/blog" term="flex" /><category scheme="http://www.brianlegros.com/blog" term="javascript" /><category scheme="http://www.brianlegros.com/blog" term="mock-objects" /><category scheme="http://www.brianlegros.com/blog" term="testing" />		<summary type="html"><![CDATA[So I've started my new job and I'm working with Flex and ActionScript 3.  I was tasked with throwing together a couple classes and there respective unit tests this week.  The classes don't integrate with any external resources and mostly do pass through except for some cross cutting concerns (e.g. - logging, security, [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/10/19/actionscript-just-different-enough-to-piss-you-off/">&lt;p&gt;So I've &lt;a href="http://maximporges.blogspot.com/2008/10/welcoming-brian-legros.html"&gt;started my new job&lt;/a&gt; and I'm working with Flex and ActionScript 3.  I was tasked with throwing together a couple classes and there respective unit tests this week.  The classes don't integrate with any external resources and mostly do pass through except for some cross cutting concerns (e.g. - logging, security, etc).  I figured writing my tests would be pretty straight forward:  throw together the appropriate test cases and in each mock out any dependencies.&lt;/p&gt;
&lt;p&gt;Now when I think about a language I try to put it into the context of other languages I've had experience with, identify differences in language elements, and work from there.  With respect to ActionScript, I tended to problem solve in the context of JavaScript since they are both based on ECMAScript, but I've run into some frustrations along the way.&lt;/p&gt;
&lt;p&gt;To mock out an object in a test using JavaScript I'd typically write something like:&lt;/p&gt;
&lt;div class="syntax_hilite"&gt;
&lt;div id="javascript-8"&gt;
&lt;div class="javascript"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; dependency = &lt;span style="color: #003366; font-weight: bold;"&gt;new&lt;/span&gt; MyDependency&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;dependency.&lt;span style="color: #006600;"&gt;methodToMock&lt;/span&gt; = &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #003366; font-weight: bold;"&gt;true&lt;/span&gt;; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; obj = &lt;span style="color: #003366; font-weight: bold;"&gt;new&lt;/span&gt; MyClass&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;dependency&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;assertTrue&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;obj.&lt;span style="color: #006600;"&gt;passThroughMethodUsingMockThatICreated&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;or if I wanted to mock out objects being instantiated by a dependency that I couldn't inject:&lt;/p&gt;
&lt;div class="syntax_hilite"&gt;
&lt;div id="javascript-9"&gt;
&lt;div class="javascript"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;MyDependency.&lt;span style="color: #006600;"&gt;prototype&lt;/span&gt;.&lt;span style="color: #006600;"&gt;methodToMock&lt;/span&gt; = &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #003366; font-weight: bold;"&gt;true&lt;/span&gt;; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; obj = &lt;span style="color: #003366; font-weight: bold;"&gt;new&lt;/span&gt; MyClass&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;assertTrue&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;obj.&lt;span style="color: #006600;"&gt;passThroughMethodUsingMockThatIDidntCreate&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;In ActionScript, assuming that &lt;code&gt;MyDependecy&lt;/code&gt; is declared in an ActionScript class, the first and second approach I used in the above will not work.  I did some reading on the &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=04_OO_Programming_12.html"&gt;Flex 3 livedocs&lt;/a&gt; and found out that the culprit was the &lt;code&gt;traits&lt;/code&gt; object that was introduced in AS3.  To abridge, the traits object is a copy of all applicable properties from parent classes and defined properties in the current class that need to be available at run-time to help reduce the performance hit of walking the prototype chain previously used for inheritance.  The traits object is an internal mechanism which is not accessible by the developer.  Prototype-base inheritance is still available, but falls secondary to traits.  Awesome.&lt;/p&gt;
&lt;p&gt;So unless I declare the methods of my class as members of the prototype for the class, I can't manipulate them at run-time.  So instead of the following:&lt;/p&gt;
&lt;div class="syntax_hilite"&gt;
&lt;div id="actionscript-10"&gt;
&lt;div class="actionscript"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #0066CC;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; MyDependency &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color: #0066CC;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; methodToMock&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; : &lt;span style="color: #0066CC;"&gt;Boolean&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ...&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I'd have to write:&lt;/p&gt;
&lt;div class="syntax_hilite"&gt;
&lt;div id="actionscript-11"&gt;
&lt;div class="actionscript"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #0066CC;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; MyDependency &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color: #0066CC;"&gt;prototype&lt;/span&gt;.&lt;span style="color: #006600;"&gt;methodToMock&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; : &lt;span style="color: #0066CC;"&gt;Boolean&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ...&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So now I've got &lt;code&gt;methodToMock&lt;/code&gt; available in a data structure I can mess with at run-time.  I still, however, can't accomplish what I did in JavaScript unless I add the keyword &lt;code&gt;dynamic&lt;/code&gt; to the class declaration (as below) or remove the "strict" flag from the compiler:&lt;/p&gt;
&lt;div class="syntax_hilite"&gt;
&lt;div id="actionscript-12"&gt;
&lt;div class="actionscript"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #0066CC;"&gt;public&lt;/span&gt; &lt;span style="color: #0066CC;"&gt;dynamic&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; MyDependency &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color: #0066CC;"&gt;prototype&lt;/span&gt;.&lt;span style="color: #006600;"&gt;methodToMock&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; : &lt;span style="color: #0066CC;"&gt;Boolean&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ...&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Now I can manipulate the object and its class' prototype the way I would in JavaScript.  It irks me a bit that performance was the driving force for all of this hoopla, but I'm just an application developer, so I won't pretend to understand all of the motivations for these decisions.&lt;/p&gt;
&lt;p&gt;As another alternative, I thought about just using &lt;code&gt;Object&lt;/code&gt; for all of my mocks, but I quickly dismissed the option since we're using the explicit typing with ActionScript, as I suspect most are since its promoted for its performance boost.  I also looked into using the &lt;code&gt;Proxy&lt;/code&gt; class as a run-time solution, but alas it can't be instantiated, only extended; this would mean writing class declarations for every mock I wanted to create, which seems kinda silly, and I still would have to deal with the explicit typing issue.  On a side note, it would have been nice if &lt;code&gt;Proxy&lt;/code&gt; had the option to be instantiated with the object it's proxying as a constructor argument, mimic the type passed as the argument, and allow run-time manipulation.  No idea if this is feasible though, so I'll count it as a pipe dream for now.  In any case, from my experience mocks are intended to be used within a context and disposable for the purpose of testing; why would I write anything more than inline code to utilize mock objects?&lt;/p&gt;
&lt;p&gt;In the end, I'm probably going to be making end-to-end tests using stubs for the classes I want to test.  Once we have some time to evaluate mock object libraries for ActionScript, I'll probably start digging again for more answers.  We'll eventually need something to help us with expectation-based testing anyway, so a library will be the way to go.  Hopefully I'll end up finding something more like &lt;a href="http://mocha.rubyforge.org/"&gt;Mocha&lt;/a&gt; or &lt;a href="http://code.google.com/p/moq/"&gt;Moq&lt;/a&gt; than &lt;a href="http://www.jmock.org/"&gt;JMock&lt;/a&gt;, although I think the opposite may be true.&lt;/p&gt;
&lt;p&gt;There are language elements in ActionScript that I'm extremely grateful to have at my disposal (e.g. - events, properties, functions, etc).  A few quirks exist though (e.g. - object/class manipulation at runtime and reflection) that still get me when I try to think about ActionScript in the context of JavaScript.  Going forward I think I'm going to switch gears and solve problems more as I would a Java/C# developer than a JavaScript developer, favoring the use of libraries over the language features to get every day tasks done.  I like ActionScript, but what good would a blog be if I couldn't complain.&lt;/p&gt;
&lt;p&gt; &lt;img src='http://www.brianlegros.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;br/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE:&lt;/em&gt;&lt;/strong&gt; I can't take credit for the tagline, some Flex developers I know have begun to adopt it and I borrowed it from &lt;a href="http://www.danielroop.com/blog/"&gt;Dan&lt;/a&gt;.&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/actionscript/" title="actionscript" rel="tag"&gt;actionscript&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/flex/" title="flex" rel="tag"&gt;flex&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/javascript/" title="javascript" rel="tag"&gt;javascript&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/mock-objects/" title="mock-objects" rel="tag"&gt;mock-objects&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/testing/" title="testing" rel="tag"&gt;testing&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=BGT5M"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=BGT5M" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/10/19/actionscript-just-different-enough-to-piss-you-off/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/10/19/actionscript-just-different-enough-to-piss-you-off/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/10/19/actionscript-just-different-enough-to-piss-you-off/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[A dog and a razor get into a fight &#8230;]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/422120743/" />
		<id>http://www.brianlegros.com/blog/?p=232</id>
		<updated>2008-11-18T22:10:16Z</updated>
		<published>2008-10-16T00:56:12Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="useless" /><category scheme="http://www.brianlegros.com/blog" term="ptosis" />		<summary type="html"><![CDATA[ 
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
... and the dog loses.  We may owe Ptosis an apology, we didn't know what they meant by puppy cut.

	Tags: ptosis
]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/10/15/a-dog-and-a-razor-get-into-a-fight/">&lt;p&gt;&lt;a rel="lightbox" href="http://www.brianlegros.com/blog/wp-content/uploads/2008/10/the_hunter.jpg"&gt;&lt;img src="http://www.brianlegros.com/blog/wp-content/uploads/2008/10/the_hunter-233x300.jpg" alt="" title="Puppy Cut LeGros" width="233" height="300" class="alignnone size-medium wp-image-234" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;... and the dog loses.  We may owe Ptosis an apology, we didn't know what they meant by puppy cut.&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/ptosis/" title="ptosis" rel="tag"&gt;ptosis&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=x5GiM"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=x5GiM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/10/15/a-dog-and-a-razor-get-into-a-fight/#comments" thr:count="8" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/10/15/a-dog-and-a-razor-get-into-a-fight/feed/atom/" thr:count="8" />
		<thr:total>8</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/10/15/a-dog-and-a-razor-get-into-a-fight/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Career Decisions]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/417389268/" />
		<id>http://www.brianlegros.com/blog/?p=228</id>
		<updated>2008-10-11T02:33:45Z</updated>
		<published>2008-10-11T02:33:45Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="news" />		<summary type="html"><![CDATA[Today was the last day of the 4th job in my career.  Over the last few years, mainly due to relocation, I've chosen to change jobs quite a few times.  My decision to leave my latest employer was probably one of the toughest decisions I've had to make in my career however.  [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/10/10/career-decisions/">&lt;p&gt;Today was the last day of the 4th job in my career.  Over the last few years, mainly due to relocation, I've chosen to change jobs quite a few times.  My decision to leave my latest employer was probably one of the toughest decisions I've had to make in my career however.  Let me provide a little back story.&lt;/p&gt;
&lt;p&gt;I started working for my last employer roughly 7 months ago.  Previously I was working for a large, privately held timeshare company and was commuting anywhere from 2-4 hours a day from the coast into West Orlando.  I was so eager to work closer to home, I decided to take a risk and accept an offer at a company I knew needed a lot of ground work to get to a point where they could be productive in terms of development.  I've based my career on getting development teams organized and productive so this opportunity seemed like a good fit for me.  Without getting into too much detail, over a few months I realized that I was working for a manager who was obsessed with playing political games and too proud to admit he had ever made a mistake.  As it turned out, I wasn't the only employee who had an issue with my manager, and after a year or so of service, my manager and the company decided to part ways.  With our previous manager out of the way, things really started to look up, our opinions were heard and we were finally given the opportunity to be productive.  The job had finally become what I had expected it to be after almost 6 months time.&lt;/p&gt;
&lt;p&gt;Before my manager hit the road, I started to look for another job with the expectation that my manager would never leave the company; from my perspective he seemed pretty well seeded.  I got an offer for a great opportunity to work with Max again in a job with some great technical challenges.  The offer came before my boss was out of the picture however.  I found myself faced with the choice of staying onboard with a shop that finally had its roadblocks removed or move onto a new opportunity in an area that really interested me.  What made this decision even harder was the fact that both shops have a great teams behind them.  Some may say it's a good problem to have, but it's wasn't easy for me.&lt;/p&gt;
&lt;p&gt;In the end I decided to go with a new opportunity for the potential growth that it will bring to my career.  I'm hoping to make this new job a long term position and am really looking forward to the challenges it will bring.  That being said, I leave an amazing team and a new and effective manager.  Anyone who they find to replace me will be fortunate to work with such a great staff and for a company with so much potential on the web.  I wish them nothing but the best!  &lt;/p&gt;
&lt;p&gt;As for my new team, see you on Monday.  I look forward to finding new ways to fail you all &lt;img src='http://www.brianlegros.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt;&lt;/p&gt;
&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt; None. &lt;br/&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=ge0FM"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=ge0FM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/10/10/career-decisions/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/10/10/career-decisions/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/10/10/career-decisions/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Diving back into Selenium and saving me some time]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/402424851/" />
		<id>http://www.brianlegros.com/blog/?p=219</id>
		<updated>2008-09-25T03:48:50Z</updated>
		<published>2008-09-25T03:48:50Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="programming" /><category scheme="http://www.brianlegros.com/blog" term="flex" /><category scheme="http://www.brianlegros.com/blog" term="javascript" /><category scheme="http://www.brianlegros.com/blog" term="regression" /><category scheme="http://www.brianlegros.com/blog" term="selenium" /><category scheme="http://www.brianlegros.com/blog" term="testing" /><category scheme="http://www.brianlegros.com/blog" term="user-interface" /><category scheme="http://www.brianlegros.com/blog" term="web" />		<summary type="html"><![CDATA[Over the years I've been using Selenium as my tool of choice for UI testing on the web.  Recently, we've had the need to regression test a vendor web application due to some poor quality builds being produced.  Based on past experience, it takes us about 40 hours of work to regression test [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/09/24/diving-back-into-selenium-and-saving-me-some-time/">&lt;p&gt;Over the years I've been using &lt;a href="http://selenium.openqa.org/"&gt;Selenium&lt;/a&gt; as my tool of choice for UI testing on the web.  Recently, we've had the need to regression test a vendor web application due to some poor quality builds being produced.  Based on past experience, it takes us about 40 hours of work to regression test the product UI by hand, including double checking for annoying copy changes that always seem to slip through.  Today we finished the first chunk of a baseline set of tests that accounts for roughly 30% of our test plans.  It took us about 150% of the time needed to do one regression test to get this first chunk done.  Since we regression test regularly, we're going to incrementally add more tests each time, getting into a habit of updating our Selenium test suites with the latest changes per build.  With that said, let me just tell you this is probably one of the most detailed applications I've had to test with Selenium.  Guess how long it takes to run our tests that don't require some type of manual setup ... less than 5 minutes.  So we've taken a third of our tests that took about 10 hours to execute and reduced them to 5 minutes of watching the browser go nuts with all the typing and clicking.  There is still work to be done manually that we will never escape (global system setup), but talk about saving time.  No matter how much I use Selenium I never get tired of the benefit it provides in the long run.&lt;/p&gt;
&lt;p&gt;So all though these stats are encouraging for management to hear, but what I really like about Selenium is how simple it is to create test suites.  Don't get me wrong though, there a few things that can cause hang-ups.  Hacking out XPath statements is one that I face quite frequently.  Consider a command in Selenium called &lt;em&gt;verifySelectLabel&lt;/em&gt; which takes a &lt;em&gt;locator&lt;/em&gt; (typically an XPath expression) to find the select box in the DOM and a &lt;em&gt;pattern&lt;/em&gt; (typically a simplified regex) to match the text of the option currently selected in the select box.  The Selenium IDE has a "Find..." button to help validate the XPath statement and some context menu options in the browser to help, but in most cases I always find myself messing around with the XPath statements.  Recently, while playing around with &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; (my favorite JavaScript swiss army knife) I noticed that under the HTML tab when right-clicking on a tag you get the option &lt;em&gt;Copy XPath&lt;/em&gt;.  Selenium's XPath support is really robust and the Firebug's syntax ports over flawlessly.  I did notice that while running in IE I had to simplify the statements sometimes to get them to pass, but otherwise, it's cut my recording time down considerably.  &lt;/p&gt;
&lt;p&gt;Another thing that always sucks up my time is when I have to hack together JavaScript to get data ready for a test (especially when it comes to dates).  The &lt;em&gt;storeEval&lt;/em&gt; command will execute a JavaScript snippet and take the result of the last line and put it into JS variable for later use.  In the past I'd fire up a kind-of scribble pad HTML doc with some inline script and test my code, but this time around Firebug is all I needed.  The Console tab gave me my own scribble pad with the added help of the Firebug console object.  Another cool JavaScript helper I hadn't used before was the &lt;em&gt;user-extensions.js&lt;/em&gt; file, which is imported into the test runner giving you access to whatever JS you want to re-use.  I found a pretty &lt;a href="http://www.datejs.com/"&gt;descent date API&lt;/a&gt; that I copy/pasted into this file making working with dates in my tests stupid simple.  Finally, this is the first time I've tested a product that I didn't help write and that was written using ASP.NET Web Forms.  With the help of debug(), monitor(), and the Inspect tool in Firebug, I was able to find my way around the mess of scripts on the page very quickly.  Even though the generated code wasn't my favorite, I have to give credit to ASP.NET's management of inputs; each input was generate with a unique ID which made testing incredibly easy.&lt;/p&gt;
&lt;p&gt;Overall, it was great to get back into using Selenium and I'm really excited at the possibilities of starting to use &lt;a href="http://selenium-rc.openqa.org/"&gt;Selenium Remote Control&lt;/a&gt; and &lt;a href="http://selenium-grid.openqa.org/"&gt;Grid&lt;/a&gt;.  The prospect of getting my unit testing framework (NUnit) into the picture will definitely help to complete and simplify the build process.  What's even cooler is that once we've put all the work into recording our tests in HTML, the Selenium IDE will translate them into C# so we don't have to repeat ourselves.  With new extensions for working with &lt;a href="http://sourceforge.net/projects/seleniumflexapi/"&gt;Flex&lt;/a&gt;, this tool's potential continues to grow.  If you've never tried out Selenium, definitely give it a shot.  The barrier to entry is low and you can choose the level of complexity you want to bring to the table.&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/flex/" title="flex" rel="tag"&gt;flex&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/javascript/" title="javascript" rel="tag"&gt;javascript&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/regression/" title="regression" rel="tag"&gt;regression&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/selenium/" title="selenium" rel="tag"&gt;selenium&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/testing/" title="testing" rel="tag"&gt;testing&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/user-interface/" title="user-interface" rel="tag"&gt;user-interface&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/web/" title="web" rel="tag"&gt;web&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=Uf8oL"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=Uf8oL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/09/24/diving-back-into-selenium-and-saving-me-some-time/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/09/24/diving-back-into-selenium-and-saving-me-some-time/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/09/24/diving-back-into-selenium-and-saving-me-some-time/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[RAnDOM Meeting Tomorrow]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/376790376/" />
		<id>http://www.brianlegros.com/blog/?p=214</id>
		<updated>2008-08-28T04:17:23Z</updated>
		<published>2008-08-28T04:17:23Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="news" /><category scheme="http://www.brianlegros.com/blog" term="javascript" /><category scheme="http://www.brianlegros.com/blog" term="jquery" /><category scheme="http://www.brianlegros.com/blog" term="random" /><category scheme="http://www.brianlegros.com/blog" term="user group" />		<summary type="html"><![CDATA[For anyone who is interested, the first RAnDOM (Rich ApplicatioN Developers Of Melbourne) user group meeting is tomorrow, 08/28, at 7:00 PM @ Goombay's on A1A.  We had to move it back from 08/21 to its new date due to Tropical Storm Faye.  We will be covering creating mashups using jQuery and Google [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/08/27/random-meeting-tomorrow/">&lt;p&gt;For anyone who is interested, the first &lt;a href="http://itsrandom.info"&gt;RAnDOM &lt;/a&gt;(Rich ApplicatioN Developers Of Melbourne) user group meeting is tomorrow, 08/28, at 7:00 PM @ Goombay's on A1A.  We had to move it back from 08/21 to its new date due to Tropical Storm Faye.  We will be covering creating mashups using jQuery and Google Maps and Charts.  The code sample is available in the &lt;a href="http://svn.itsrandom.info/20080821/"&gt;RAnDOM SVN repository&lt;/a&gt;.  Check out the blog for more information on requirements to participate in coding and please &lt;a href="http://itsrandominfo20080821.eventbrite.com/"&gt;RSVP on EventBrite&lt;/a&gt; if you intend to come out.  Hope to see you all there!&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/javascript/" title="javascript" rel="tag"&gt;javascript&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/jquery/" title="jquery" rel="tag"&gt;jquery&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/random/" title="random" rel="tag"&gt;random&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/user-group/" title="user group" rel="tag"&gt;user group&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=4dTtcK"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=4dTtcK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/08/27/random-meeting-tomorrow/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/08/27/random-meeting-tomorrow/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/08/27/random-meeting-tomorrow/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Brian LeGros</name>
						<uri>http://www.brianlegros.com/blog</uri>
					</author>
		<title type="html"><![CDATA[RAnDOM is ready]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/brianlegros/~3/355894777/" />
		<id>http://www.brianlegros.com/blog/?p=210</id>
		<updated>2008-08-05T02:10:40Z</updated>
		<published>2008-08-05T02:10:40Z</published>
		<category scheme="http://www.brianlegros.com/blog" term="news" /><category scheme="http://www.brianlegros.com/blog" term="adogo" /><category scheme="http://www.brianlegros.com/blog" term="random" /><category scheme="http://www.brianlegros.com/blog" term="ria" /><category scheme="http://www.brianlegros.com/blog" term="user group" /><category scheme="http://www.brianlegros.com/blog" term="web" />		<summary type="html"><![CDATA[After weeks of planning and months of picking a name, a few of us have finally put together a user group for the Brevard area.  The group is called RAnDOM, Rich ApplicatioN Developers Of Melbourne.  Our blog is located @ http://itsrandom.info.  If you're interested, you can see the cool layout that Sebastian [...]]]></summary>
		<content type="html" xml:base="http://www.brianlegros.com/blog/2008/08/04/random-is-ready/">&lt;p&gt;After weeks of planning and months of picking a name, a few of us have finally put together a user group for the Brevard area.  The group is called RAnDOM, Rich ApplicatioN Developers Of Melbourne.  Our blog is located @ &lt;a href="http://itsrandom.info"&gt;http://itsrandom.info&lt;/a&gt;.  If you're interested, you can see the cool layout that &lt;a href="http://www.vertseven.com"&gt;Sebastian&lt;/a&gt; put together for us.&lt;/p&gt;
&lt;p&gt;My hope is that by bringing this group to Brevard we can begin to really grow the developer community in the area.  We have an active &lt;a href="http://scdnug.org/"&gt;.NET user group&lt;/a&gt; and &lt;a href="http://floridacreatives.com/group/brevard"&gt;Florida Creatives&lt;/a&gt; is getting started, but as far as coding goes, there aren't that many opportunities to learn in a hands on way.  At the &lt;a href="http://adogo.us"&gt;Adogo&lt;/a&gt;, I really enjoyed our code camps these past few months, so I think that since we're likely to start small, we can establish a great group by just hacking away.  The area also seems to have a lot of web consulting companies, so maybe we can even a few of them to come out.&lt;/p&gt;
&lt;p&gt;I really want a place to get together with fellow developers to code and discuss whatever may come over a cool beer and some wifi.  If this is what does it, right on; if not, at least I still got a cold beer.&lt;/p&gt;
&lt;p&gt; &lt;img src='http://www.brianlegros.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt;&lt;/p&gt;

	&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Tags: &lt;/strong&gt;&lt;a href="http://www.brianlegros.com/blog/tag/adogo/" title="adogo" rel="tag"&gt;adogo&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/random/" title="random" rel="tag"&gt;random&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/ria/" title="ria" rel="tag"&gt;ria&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/user-group/" title="user group" rel="tag"&gt;user group&lt;/a&gt;, &lt;a href="http://www.brianlegros.com/blog/tag/web/" title="web" rel="tag"&gt;web&lt;/a&gt;&lt;br /&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/brianlegros?a=qfB5fK"&gt;&lt;img src="http://feeds.feedburner.com/~f/brianlegros?i=qfB5fK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://www.brianlegros.com/blog/2008/08/04/random-is-ready/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://www.brianlegros.com/blog/2008/08/04/random-is-ready/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://www.brianlegros.com/blog/2008/08/04/random-is-ready/</feedburner:origLink></entry>
	</feed><!-- Dynamic Page Served (once) in 0.890 seconds -->
