<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>愚人呓语 &#187; 敝帚不珍 · [作品]</title>
	<atom:link href="http://eidiot.net/category/works/feed/" rel="self" type="application/rss+xml" />
	<link>http://eidiot.net</link>
	<description>eidiot's blog. My flapdoodles.</description>
	<lastBuildDate>Tue, 06 Jul 2010 10:33:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Flex Unit 4 的 Test Suite 生成工具</title>
		<link>http://eidiot.net/2010/07/06/test-suite-generator-for-flex-unit-4/</link>
		<comments>http://eidiot.net/2010/07/06/test-suite-generator-for-flex-unit-4/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 10:32:23 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[flexunit]]></category>
		<category><![CDATA[unittest]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=552</guid>
		<description><![CDATA[Read in English: Test suite generator for Flex Unit 4 写了一个 小工具 来生成 AllTests.as 文件给 FlexUnit4 用. 下载 air 文件，安装运行即可。 同过ant调用的示例代码: &#60;project name=&#34;Test Suiter&#34; default=&#34;createSuite&#34;&#62; &#60;target name=&#34;createSuite&#34;&#62; &#60;exec executable=&#34;/Applications/TestSuiter.app/Contents/MacOS/TestSuiter&#34;&#62; &#60;arg value=&#34;/Users/someone/Desktop/SomeProject/tests&#34; /&#62; &#60;/exec&#62; &#60;/target&#62; &#60;/project&#62;]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/07/06/test-suite-generator-for-flex-unit-4/" class="liinternal">Read in English: Test suite generator for Flex Unit 4</a></p>
<p>写了一个 <a href="http://github.com/eidiot/TestSuiter" target="_blank" class="liexternal">小工具</a> 来生成 AllTests.as 文件给 <a href="http://flexunit.org/" target="_blank" class="liexternal">FlexUnit4</a> 用. <a href="http://github.com/eidiot/TestSuiter/downloads" target="_blank" class="liexternal">下载</a> air 文件，安装运行即可。</p>
<p>同过ant调用的示例代码: </p>

<div class="wp_codebox"><table><tr id="p5522"><td class="code" id="p552code2"><pre class="xml" style="font-family:monospace;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Test Suiter&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;createSuite&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;createSuite&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exec</span> <span style="color: #000066;">executable</span>=<span style="color: #ff0000;">&quot;/Applications/TestSuiter.app/Contents/MacOS/TestSuiter&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;/Users/someone/Desktop/SomeProject/tests&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exec<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/07/06/test-suite-generator-for-flex-unit-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用FlexUnit4对as3-signals进行异步测试</title>
		<link>http://eidiot.net/2010/05/21/async-test-for-as3-signals-with-flexunit4/</link>
		<comments>http://eidiot.net/2010/05/21/async-test-for-as3-signals-with-flexunit4/#comments</comments>
		<pubDate>Fri, 21 May 2010 03:46:27 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[as3-signals]]></category>
		<category><![CDATA[flexunit]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=551</guid>
		<description><![CDATA[Read in English: Async test for as3-signals with FlexUnit4 使用 Robert Penner 的 as3-signals 可以帮助我们节省代码量并写出更整洁的代码. 这是一个由几个代理方法组成的使用 FlexUnit4进行测试的扩展 proceedOnSignal handleSignal failOnSignal registerFailureSignal proceedOnSignal 使用这个方法确认一个signal必须被抛出。 &#91;Test&#40;async&#41;&#93; public function test_proceedOnSignal&#40;&#41;:void &#123; var model:IModel = new SomeModel&#40;&#41;; proceedOnSignal&#40;this, model.changedSignal&#41;; model.doSomethingChange&#40;&#41;; &#125; handleSignal 使用这个方法确认一个signal被抛出并且在handler方法里进行更多的断言。这个handler方法必须接收两个参数，第一个是SignalAsyncEvent，可以从这个事件的 args 属性里拿到 signal 的 dispatch 方法里传出的所有参数。第二个参数是一个Object，传进的是 handleSignal 方法的 passThroughData 参数。 &#91;Test&#40;async&#41;&#93; public function change_user&#40;&#41;:void &#123; var [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/05/21/async-test-for-as3-signals-with-flexunit4/" class="liinternal">Read in English: Async test for as3-signals with FlexUnit4</a></p>
<p>使用 <a href="http://robertpenner.com/" target="_blank" class="liexternal">Robert Penner</a> 的 <a href="http://github.com/robertpenner/as3-signals" target="_blank" class="liexternal">as3-signals</a> 可以帮助我们节省代码量并写出更整洁的代码. 这是一个由几个代理方法组成的使用 <a href="http://flexunit.org/" target="_blank" class="liexternal">FlexUnit4</a>进行测试的<a href="http://github.com/eidiot/as3-signals-utilities-async" target="_blank" class="liexternal">扩展</a></p>
<ul>
<li>proceedOnSignal</li>
<li>handleSignal</li>
<li>failOnSignal</li>
<li>registerFailureSignal</li>
</ul>
<h4>proceedOnSignal</h4>
<p>使用这个方法确认一个signal必须被抛出。</p>

<div class="wp_codebox"><table><tr id="p5517"><td class="code" id="p551code7"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#40;</span>async<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> test_proceedOnSignal<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> model:IModel = <span style="color: #000000; font-weight: bold;">new</span> SomeModel<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    proceedOnSignal<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, model.<span style="color: #006600;">changedSignal</span><span style="color: #66cc66;">&#41;</span>;
    model.<span style="color: #006600;">doSomethingChange</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p><span id="more-551"></span></p>
<h4>handleSignal</h4>
<p>使用这个方法确认一个signal被抛出并且在handler方法里进行更多的断言。这个handler方法必须接收两个参数，第一个是<em>SignalAsyncEvent</em>，可以从这个事件的 args 属性里拿到 signal 的 dispatch 方法里传出的所有参数。第二个参数是一个Object，传进的是 <em>handleSignal</em> 方法的 <em>passThroughData</em> 参数。</p>

<div class="wp_codebox"><table><tr id="p5518"><td class="code" id="p551code8"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#40;</span>async<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> 
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> change_user<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> model:IModel = <span style="color: #000000; font-weight: bold;">new</span> SomeModel<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    handleSignal<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, model.<span style="color: #006600;">changedSignal</span>, verify_user, <span style="color: #cc66cc;">500</span>, <span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&quot;name&quot;</span>:<span style="color: #ff0000;">&quot;Tom&quot;</span>, <span style="color: #ff0000;">&quot;age&quot;</span>:<span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
    model.<span style="color: #006600;">changeUser</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Tom&quot;</span>, <span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> verify_user<span style="color: #66cc66;">&#40;</span>event:SignalAsyncEvent, <span style="color: #0066CC;">data</span>:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    assertEquals<span style="color: #66cc66;">&#40;</span>event.<span style="color: #006600;">args</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0066CC;">data</span>.<span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#41;</span>;
    assertEquals<span style="color: #66cc66;">&#40;</span>event.<span style="color: #006600;">args</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0066CC;">data</span>.<span style="color: #006600;">age</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>
<h4>failOnSignal</h4>
<p>使用这个方法来确认一个signal <strong>不</strong> 被抛出。</p>

<div class="wp_codebox"><table><tr id="p5519"><td class="code" id="p551code9"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#40;</span>async<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> 
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> not_changed<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> model:IModel = <span style="color: #000000; font-weight: bold;">new</span> SomeModel<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    failOnSignal<span style="color: #66cc66;">&#40;</span>model.<span style="color: #006600;">changedSignal</span><span style="color: #66cc66;">&#41;</span>;
    model.<span style="color: #006600;">doSomethingNotChange</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>
<h4>registerFailureSignal</h4>
<p>使用这个方法在一个signal被抛出的时候使测试失败。假设你正在等待一个service的success signal，当这个service的error signal 抛出的时候你将希望这个测试直接失败，而不是等待超时。</p>

<div class="wp_codebox"><table><tr id="p55110"><td class="code" id="p551code10"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#40;</span>async<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> 
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> call_service<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> service:IService = <span style="color: #000000; font-weight: bold;">new</span> SomeService<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    registerFailureSignal<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, service.<span style="color: #006600;">failedSignal</span><span style="color: #66cc66;">&#41;</span>;
    proceedOnSignal<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, service.<span style="color: #006600;">successSignal</span><span style="color: #66cc66;">&#41;</span>;
    service.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>
<h4>更多</h4>
<ul>
<li><a href="http://github.com/eidiot/as3-signals-utilities-async/downloads" target="_blank" class="liexternal">下载这个扩展库</a></li>
<li><a href="http://docs.flexunit.org/asdocs/org/flexunit/async/Async.html" target="" class="liexternal">FlexUnit4中异步测试的更多内容</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/05/21/async-test-for-as3-signals-with-flexunit4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Tasks Wapper of ig version</title>
		<link>http://eidiot.net/2010/05/02/google-tasks-wapper-of-ig-version/</link>
		<comments>http://eidiot.net/2010/05/02/google-tasks-wapper-of-ig-version/#comments</comments>
		<pubDate>Sun, 02 May 2010 09:30:23 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=550</guid>
		<description><![CDATA[不是很喜欢 Christian Cantrell 使用的 https://mail.google.com/tasks/canvas 版本，所以重新做了一个，使用轻量的 https://mail.google.com/tasks/ig 版。 代码很简单，放在了 GitHub 上。 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_badge_899119003"
			class="flashmovie"
			width="217"
			height="180">
	<param name="movie" value="http://eidiot.net/product/google_tasks_ig/badge.swf" />
	<param name="flashvars" value="appname=GoogleTaskIg&amp;appurl=http://eidiot.net/product/google_tasks_ig/GoogleTaskIg.air&amp;airversion=1.5&amp;imageurl=http://eidiot.net/product/google_tasks_ig/google_tasks_ig_badge.png" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/product/google_tasks_ig/badge.swf"
			name="fm_badge_899119003"
			width="217"
			height="180">
		<param name="flashvars" value="appname=GoogleTaskIg&amp;appurl=http://eidiot.net/product/google_tasks_ig/GoogleTaskIg.air&amp;airversion=1.5&amp;imageurl=http://eidiot.net/product/google_tasks_ig/google_tasks_ig_badge.png" />
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>]]></description>
			<content:encoded><![CDATA[<p>不是很喜欢 <a href="http://blogs.adobe.com/cantrell/archives/2009/12/google_tasks_on_your_desktop.html" target="_blank" class="liexternal">Christian Cantrell</a> 使用的 <a href="https://mail.google.com/tasks/canvas" target="_blank" class="liexternal">https://mail.google.com/tasks/canvas</a> 版本，所以重新做了一个，使用轻量的 <a href="https://mail.google.com/tasks/ig" target="_blank" class="liexternal">https://mail.google.com/tasks/ig</a> 版。 代码很简单，放在了 <a href="http://github.com/eidiot/GoogleTasksWapper" target="_blank" class="liexternal">GitHub</a> 上。</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_badge_1831185220"
			class="flashmovie"
			width="217"
			height="180">
	<param name="movie" value="http://eidiot.net/product/google_tasks_ig/badge.swf" />
	<param name="flashvars" value="appname=GoogleTaskIg&amp;appurl=http://eidiot.net/product/google_tasks_ig/GoogleTaskIg.air&amp;airversion=1.5&amp;imageurl=http://eidiot.net/product/google_tasks_ig/google_tasks_ig_badge.png" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/product/google_tasks_ig/badge.swf"
			name="fm_badge_1831185220"
			width="217"
			height="180">
		<param name="flashvars" value="appname=GoogleTaskIg&amp;appurl=http://eidiot.net/product/google_tasks_ig/GoogleTaskIg.air&amp;airversion=1.5&amp;imageurl=http://eidiot.net/product/google_tasks_ig/google_tasks_ig_badge.png" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer" target="_blank" class="liimagelink"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/05/02/google-tasks-wapper-of-ig-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xface: 简单的ui-unit辅助开发工具</title>
		<link>http://eidiot.net/2010/04/18/xface-a-simple-ui-unit-develop-tool/</link>
		<comments>http://eidiot.net/2010/04/18/xface-a-simple-ui-unit-develop-tool/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 15:42:56 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xface]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=549</guid>
		<description><![CDATA[Read in English: xface: A simple ui-unit develop tool XFace 是一个简单的 AsUnit/FlexUnit 4 风格的 UI-Unit 框架, 但不是用于测试。它是快速到达和验证ui实现的辅助开发工具。 Demo: (Source) 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_DemoUIUnitRunner_675900500"
			class="flashmovie"
			width="370"
			height="240">
	<param name="movie" value="http://eidiot.github.com/xface/demo/DemoUIUnitRunner.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.github.com/xface/demo/DemoUIUnitRunner.swf"
			name="fm_DemoUIUnitRunner_675900500"
			width="370"
			height="240">
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> Xface 使用和 AsUnit/FlexUnit 4 一样的 [Before], [After], [Test], [Suite] metadata 标签, 并使用 [Inject] 标签用于依赖注入。 &#91;Inject&#93; pubic var container:DisplayObjectContainer; &#91;Test&#93; public function test&#40;&#41;:void &#123; container.addChild&#40;instance&#41;; &#125; 所有的ui-unit方法都显示在一个列表中，你可以运行其中之一以验证最小的ui元素，保持小步前进。 Runner UI [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/04/18/xface-a-simple-ui-unit-develop-tool" target="_blank" class="liinternal">Read in English: xface: A simple ui-unit develop tool</a></p>
<p><a href="http://eidiot.github.com/xface" target="_blank" class="liexternal">XFace</a> 是一个简单的 AsUnit/FlexUnit 4 风格的 UI-Unit 框架, 但不是用于测试。它是快速到达和验证ui实现的辅助开发工具。</p>
<p>Demo: (<a href="http://github.com/eidiot/xface/tree/master/demo/" target="_blank" class="liexternal">Source</a>)</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_DemoUIUnitRunner_308749873"
			class="flashmovie"
			width="370"
			height="240">
	<param name="movie" value="http://eidiot.github.com/xface/demo/DemoUIUnitRunner.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.github.com/xface/demo/DemoUIUnitRunner.swf"
			name="fm_DemoUIUnitRunner_308749873"
			width="370"
			height="240">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer" target="_blank" class="liimagelink"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Xface 使用和 AsUnit/FlexUnit 4 一样的 [Before], [After], [Test], [Suite] metadata 标签, 并使用 [Inject] 标签用于依赖注入。</p>

<div class="wp_codebox"><table><tr id="p54912"><td class="code" id="p549code12"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Inject<span style="color: #66cc66;">&#93;</span>
pubic <span style="color: #000000; font-weight: bold;">var</span> container:DisplayObjectContainer;
<span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#93;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> test<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
    container.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>instance<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>所有的ui-unit方法都显示在一个列表中，你可以运行其中之一以验证最小的ui元素，保持小步前进。</p>
<p>Runner UI 使用了<a href="http://twitter.com/bit101" target="_blank" class="liexternal">@bit101</a> 的 <a href="http://www.minimalcomps.com/" target="_blank" class="liexternal">Minimal Comps</a> 里的 List 组件. </p>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/04/18/xface-a-simple-ui-unit-develop-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xrope Demo</title>
		<link>http://eidiot.net/2010/03/17/demo-for-xrope/</link>
		<comments>http://eidiot.net/2010/03/17/demo-for-xrope/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 16:25:06 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xrope]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=547</guid>
		<description><![CDATA[Read in English: Demo for xrope/ 使用 Minimal Comps, Robotlegs, 和 as3-Signals 做了一个 xrope 的 demo: 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_XropeDemo_1191922496"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="http://eidiot.github.com/xrope/demo/XropeDemo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.github.com/xrope/demo/XropeDemo.swf"
			name="fm_XropeDemo_1191922496"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> Github 上Demo代码 下载 xrope swc]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/03/17/demo-for-xrope" class="liinternal">Read in English: Demo for xrope/</a></p>
<p>
使用 <a href="http://www.minimalcomps.com/" target="_blank" class="liexternal">Minimal Comps</a>, <a href="http://robotlegs.org/" target="_blank" class="liexternal">Robotlegs</a>, 和 <a href="http://github.com/robertpenner/as3-signals" target="_blank" class="liexternal">as3-Signals</a> 做了一个 <a href="http://eidiot.github.com/xrope/" target="_blank" class="liexternal">xrope</a> 的 <a href="http://eidiot.github.com/xrope/index.html#DemoLink" target="_blank" class="liexternal">demo</a>:
</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_XropeDemo_663859976"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="http://eidiot.github.com/xrope/demo/XropeDemo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.github.com/xrope/demo/XropeDemo.swf"
			name="fm_XropeDemo_663859976"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<ul>
<li><a href="http://github.com/eidiot/XropeDemo" target="_blank" class="liexternal">Github 上Demo代码</a></li>
<li><a href="http://github.com/eidiot/xrope/downloads" target="_blank" class="liexternal">下载 xrope swc</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/03/17/demo-for-xrope/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>xrope v0.2: 增加 GridLayout</title>
		<link>http://eidiot.net/2010/03/14/xrope-v0-2-added-gridlayout/</link>
		<comments>http://eidiot.net/2010/03/14/xrope-v0-2-added-gridlayout/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 10:51:44 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xrope]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=546</guid>
		<description><![CDATA[Read in English: xrope v0.2: Added GridLayout xrope v0.2.0 增加了 GridLayout 例子 文档 Github上的源代码 下载 v0.2.0 的 swc]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/03/14/xrope-v0-2-added-gridlayout/" class="liinternal">Read in English: xrope v0.2: Added GridLayout</a></p>
<p>xrope v0.2.0 增加了 GridLayout</p>
<ul>
<li><a href="http://eidiot.github.com/xrope/#GridExampleLink" target="_blank" class="liexternal">例子</a></li>
<li><a href="http://eidiot.github.com/xrope/doc/xrope/GridLayout.html" target="_blank" class="liexternal">文档</a></li>
<li><a href="http://github.com/eidiot/xrope" target="_blank" class="liexternal">Github上的源代码</a></li>
<li><a href="http://github.com/eidiot/xrope/downloads" target="_blank" class="liexternal">下载 v0.2.0 的 swc</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/03/14/xrope-v0-2-added-gridlayout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xrope v0.1.0 发布</title>
		<link>http://eidiot.net/2010/03/14/xrope-v-0-1-0-released/</link>
		<comments>http://eidiot.net/2010/03/14/xrope-v-0-1-0-released/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 16:00:47 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xman]]></category>
		<category><![CDATA[xrope]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=545</guid>
		<description><![CDATA[Read in English:xrope v0.1.0 released xrope v0.1.0 发布。 详情 例子 文档 GitHub上的源码 下载 swc]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/03/13/xrope-v-0-1-0-released/" class="liinternal">Read in English:xrope v0.1.0 released</a></p>
<p>xrope v0.1.0 发布。</p>
<ul>
<li><a href="http://eidiot.github.com/xrope/zh.html" target="_blank" class="liexternal">详情</a></li>
<li><a href="http://eidiot.github.com/xrope/zh.html#ExamplesLink" target="_blank" class="liexternal">例子</a></li>
<li><a href="http://eidiot.github.com/xrope/doc/" target="_blank" class="liexternal">文档</a></li>
<li><a href="http://github.com/eidiot/xrope" target="_blank" class="liexternal">GitHub上的源码</a></li>
<li><a href="http://github.com/eidiot/xrope/downloads" target="_blank" class="liexternal">下载 swc</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/03/14/xrope-v-0-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>开源 layout 类库: xrope</title>
		<link>http://eidiot.net/2010/02/21/new-layout-library-xrope/</link>
		<comments>http://eidiot.net/2010/02/21/new-layout-library-xrope/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 13:05:29 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xman]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=542</guid>
		<description><![CDATA[Read in English: Simple layout library: xrope 在 GitHub 新建了一个简单的 layout 类库 xrope. 之后会继续添加更多功能，和更多的类库，组成一个类库集合：xman (现在有 xrope 和 xbones)。]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://eidiot.net/en/2010/03/10/new-layout-library-xrope/" class="liinternal">Read in English: Simple layout library: xrope</a>
</p>
<p>
在 <a href="http://github.com/eidiot/xrope" target="_blank" class="liexternal">GitHub</a> 新建了一个简单的 layout 类库 <a href="http://eidiot.github.com/xrope/" target="_blank" class="liexternal">xrope</a>.
</p>
<p>
之后会继续添加更多功能，和更多的类库，组成一个类库集合：xman (现在有 <a href="http://github.com/eidiot/xrope/" target="_blank" class="liexternal">xrope</a> 和 <a href="http://github.com/eidiot/xbones/" target="_blank" class="liexternal">xbones</a>)。</p>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/02/21/new-layout-library-xrope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS3 Tool] ETracer v1.0</title>
		<link>http://eidiot.net/2008/06/27/etracer-v1-for-as3-develop/</link>
		<comments>http://eidiot.net/2008/06/27/etracer-v1-for-as3-develop/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 02:53:28 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[etracer]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=482</guid>
		<description><![CDATA[示例 &#124; Demo： (示例源代码 &#124; Source Code of the demo) 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ETracerDemo_559716784"
			class="flashmovie"
			width="580"
			height="300">
	<param name="movie" value="http://eidiot.net/product/etracer/v1.1/demo/ETracerDemo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/product/etracer/v1.1/demo/ETracerDemo.swf"
			name="fm_ETracerDemo_559716784"
			width="580"
			height="300">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> AIR客户端 &#124; ETracer AIR Client (点击放大 &#124; Click to see the larger image) 特性 &#124; Features： (einfo()函数)可以输出属性值并支持深层遍历 &#124; (The einfo() function) Can ouput values of property and support deep loop. 支持内部和外部(通过LocalConnection，AIR程序或swf文件)两种信息输出方式 &#124; Debug infomation can be shown internal [...]]]></description>
			<content:encoded><![CDATA[<p><strong>示例 | Demo：</strong> (<a href="http://eidiot.net/product/etracer/v1.1/demo/ETracerDemo.as.html" target="_blank" class="liinternal">示例源代码 | Source Code of the demo</a>)<br />

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ETracerDemo_807807612"
			class="flashmovie"
			width="580"
			height="300">
	<param name="movie" value="http://eidiot.net/product/etracer/v1.1/demo/ETracerDemo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/product/etracer/v1.1/demo/ETracerDemo.swf"
			name="fm_ETracerDemo_807807612"
			width="580"
			height="300">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object><span id="more-482"></span><br />
</p>
<ul>
<strong>AIR客户端 |  ETracer AIR Client</strong><br />
<a target="_blank" href="http://eidiot.net/product/etracer/v1.1/AirETracer.gif"><img src="http://eidiot.net/product/etracer/v1.1/AirETracer_s.gif" alt="Air ETracer Client" /><br />
(点击放大 | Click to see the larger image)<br />
</a>
</ul>
<ul>
<strong>特性 | Features：</strong></p>
<li>(<a href="http://eidiot.net/product/etracer/v1.1/doc/cn.html#einfo()" target="_blank" class="liinternal">einfo()函数</a>)可以输出属性值并支持深层遍历 |<br />
(<a href="http://eidiot.net/product/etracer/v1.1/doc/en.html#einfo()" target="_blank" class="liinternal">The einfo() function</a>) Can ouput values of property and support deep loop.</li>
<li>支持内部和外部(通过LocalConnection，<font color="red">AIR程序</font>或swf文件)两种信息输出方式 |<br />
Debug infomation can be shown internal or external(<font color="red">AIR Application</font> or swf file, by LocalConnection).</li>
<li>(SWF内部显示信息)所有组件纯代码生成，只增加10K大小 |<br />
(Show infomation in the same swf) All UI components are written by code, only 10K added to the swf file.</li>
<li><font color="red">Lc客户端AIR程序</font>支持前端显示等其它特性 |<br />
<font color="red">Lc Client as AIR Application</font> support other features such as in front of other windows.</li>
</ul>
<ul>
<strong>说明 | Note：</strong></p>
<li>Flash CS3 用户请下载ETracer源代码放在类路径内(如fla相同目录)，并导入 net.eidiot.etracer 包中的相应函数。 |<br />
Flash CS3 users please down load ETracer Source Code and put them in the class path (for example, the same fold as the fla file), and import functions in the net.eidiot.etracer package.</li>
<li>只能使用 initETracer() 或 initLcETracer() 之一初始化 ETracer。若要禁止输出只需删除该初始化函数。 |<br />
Only one of the initETracer() and initLcETracer() function can be used to initialize the ETracer. Just delete this function if want to stop all the output. </li>
<li><font color="red">推荐使用 AIR客户端 | Recommend to use the AIR application.</font></li>
</ul>
<ul>
<strong>API文档 | API Documentation：</strong></p>
<li><a href="http://eidiot.net/product/etracer/v1.1/doc/cn.html" target="_blank" class="liinternal">ETracer API 文档</a> | <a href="http://eidiot.net/product/etracer/v1.1/doc/en.html" target="_blank" class="liinternal">ETracer API Documentation</a></li>
</ul>
<ul>
<strong>相关文件 | Files：</strong></p>
<li><a href="http://eidiot.net/product/etracer/v1.1/ETracer.air" class="liinternal">Lc客户端AIR程序 | Lc Client as AIR Application </a></li>
<li><a href="http://eidiot.net/product/etracer/v1.1/demo/ELcTracerDemo.swf" target="_blank" class="liinternal">Lc客户端测试文件 | Swf File To Test Lc Client</a></li>
</ul>
<ul>
<strong>源代码 | Source Code：</strong></p>
<li><a href="http://eidiot.net/product/etracer/v1.1/src/ETracer.zip" class="liinternal">ETracer源代码 | ETracer Source Code</a></li>
<li><a href="http://eidiot.net/product/etracer/v1.1/src/ETracer.swc" class="liinternal">SWC文件 | SWC File</a></li>
<li><a href="http://eidiot.net/product/etracer/v1.1/src/EAirTracer.zip" class="liinternal">Lc客户端AIR程序源代码 | Source Code Of The Lc Client as AIR Application</a></li>
<li><font color="red">SVN: http://svn.eidiot.net/etracer/trunk/</font></li>
</ul>
<ul>
<strong>反馈 | Feedback：</strong></p>
<li><img src="http://eidiot.net/wp-content/themes/g7_v5/images/mail.png" alt="" /></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2008/06/27/etracer-v1-for-as3-develop/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>雪·花</title>
		<link>http://eidiot.net/2008/01/27/snow-and-flower/</link>
		<comments>http://eidiot.net/2008/01/27/snow-and-flower/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 09:23:44 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[照片]]></category>
		<category><![CDATA[花]]></category>
		<category><![CDATA[雪]]></category>

		<guid isPermaLink="false">http://eidiot.net/2008/01/27/snow-and-flower/</guid>
		<description><![CDATA[
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_PicF1_1937212926"
			class="flashmovie"
			width="590"
			height="480">
	<param name="movie" value="http://eidiot.net/wp-content/uploads/2008/01/PicF1.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/wp-content/uploads/2008/01/PicF1.swf"
			name="fm_PicF1_1937212926"
			width="590"
			height="480">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>(2008-01-26 上海 长风公园)]]></description>
			<content:encoded><![CDATA[
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_PicF1_1218257136"
			class="flashmovie"
			width="590"
			height="480">
	<param name="movie" value="http://eidiot.net/wp-content/uploads/2008/01/PicF1.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/wp-content/uploads/2008/01/PicF1.swf"
			name="fm_PicF1_1218257136"
			width="590"
			height="480">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>(2008-01-26 上海 长风公园)</p>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2008/01/27/snow-and-flower/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>
