src/cm/media/js/lib/yui/yui3.0.0/examples/test/test-simple-example.html
changeset 0 40c8f766c9b8
equal deleted inserted replaced
-1:000000000000 0:40c8f766c9b8
       
     1 
       
     2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
       
     3 <html>
       
     4 <head>
       
     5 	<title>YUI Library Examples: Test: Simple Testing Example</title>
       
     6     <meta http-equiv="content-type" content="text/html; charset=utf-8">
       
     7     	<link rel="stylesheet" type="text/css" href="../../assets/yui.css" >
       
     8 
       
     9 <style>
       
    10     /*Supplemental CSS for the YUI distribution*/
       
    11     #custom-doc { width: 95%; min-width: 950px; }
       
    12     #pagetitle {background-image: url(../../assets/bg_hd.gif);}
       
    13 /*    #pagetitle h1 {background-image: url(../../assets/title_h_bg.gif);}*/
       
    14 </style>
       
    15 
       
    16 <link rel="stylesheet" type="text/css" href="../../assets/dpSyntaxHighlighter.css">
       
    17 <link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
       
    18 <script type="text/javascript" src="../../build/yui/yui-min.js"></script>
       
    19 <style type="text/css">
       
    20 #testLogger {
       
    21     margin-bottom: 1em;
       
    22 }
       
    23 
       
    24 #testLogger .yui-console .yui-console-title {
       
    25     border: 0 none;
       
    26     color: #000;
       
    27     font-size: 13px;
       
    28     font-weight: bold;
       
    29     margin: 0;
       
    30     text-transform: none;
       
    31 }
       
    32 #testLogger .yui-console .yui-console-entry-meta {
       
    33     margin: 0;
       
    34 }
       
    35 
       
    36 .yui-skin-sam .yui-console-entry-pass .yui-console-entry-cat {
       
    37     background: #070;
       
    38     color: #fff;
       
    39 }
       
    40 </style>
       
    41 
       
    42 </head>
       
    43 <body id="yahoo-com" class=" yui-skin-sam">
       
    44 <div id="custom-doc" class="yui-t2">
       
    45 <div id="hd">
       
    46 	<div id="ygunav">
       
    47 		<p>
       
    48             <em>
       
    49                 <a href="http://developer.yahoo.com/yui/3/">YUI 3.x Home</a> <i> - </i>	
       
    50             </em>
       
    51 		</p>
       
    52 		<form action="http://search.yahoo.com/search" id="sitesearchform">
       
    53             <input name="vs" type="hidden" value="developer.yahoo.com">
       
    54             <input name="vs" type="hidden" value="yuiblog.com">
       
    55 		    <div id="sitesearch">
       
    56 		    	<label for="searchinput">Site Search (YDN &amp; YUIBlog): </label>
       
    57 			    <input type="text" id="searchinput" name="p">
       
    58 			    <input type="submit" value="Search" id="searchsubmit" class="ygbt">
       
    59 		    </div>
       
    60 		</form>
       
    61     </div>
       
    62 	<div id="ygma"><a href="../../"><img src="../../assets/logo.gif"  border="0" width="200" height="93"></a></div>
       
    63 	<div id="pagetitle"><h1>YUI Library Examples: Test: Simple Testing Example</h1></div>
       
    64 </div>
       
    65 <div id="bd">
       
    66 
       
    67 
       
    68 	<div id="yui-main">
       
    69 		<div class="yui-b">
       
    70 		  <div class="yui-ge">
       
    71 			  <div class="yui-u first example" id="main">
       
    72 
       
    73 	<h2>Test: Simple Testing Example</h2>
       
    74 
       
    75 	<div id="example" class="promo">
       
    76 	<div class="example-intro">
       
    77 	<p>This example shows basic usage of the YUI Test framework for testing browser-based JavaScript code. 
       
    78   Two different <a href="/yui/test/#testcase"><code>TestCase</code></a> objects are created and added to a
       
    79   <a href="/yui/test/#testsuite"><code>TestSuite</code></a> object. The <a href="/yui/test/#testrunner"><code>TestRunner</code></a>
       
    80   is then used to run the tests once the page has loaded.</p>	</div>	
       
    81 
       
    82 	<div class="module example-container ">
       
    83 			<div class="hd exampleHd">
       
    84 			<p class="newWindowButton yui-skin-sam">
       
    85                 <a href="test-simple-example_clean.html" target="_blank">View example in new window.</a>
       
    86             </p>
       
    87 		</div>		<div id="example-canvas" class="bd">
       
    88 
       
    89 		
       
    90 	<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
       
    91 	
       
    92 	<div id="testLogger"></div>
       
    93 <script type="text/javascript">
       
    94 YUI({base:"../../build/", timeout: 10000}).use("node", "console", "test",function (Y) {
       
    95 
       
    96     Y.namespace("example.test");
       
    97     
       
    98     Y.example.test.DataTestCase = new Y.Test.Case({
       
    99     
       
   100         //name of the test case - if not provided, one is auto-generated
       
   101         name : "Data Tests",
       
   102         
       
   103         //---------------------------------------------------------------------
       
   104         // setUp and tearDown methods - optional
       
   105         //---------------------------------------------------------------------
       
   106         
       
   107         /*
       
   108          * Sets up data that is needed by each test.
       
   109          */
       
   110         setUp : function () {
       
   111             this.data = {
       
   112                 name: "test",
       
   113                 year: 2007,
       
   114                 beta: true
       
   115             };
       
   116         },
       
   117         
       
   118         /*
       
   119          * Cleans up everything that was created by setUp().
       
   120          */
       
   121         tearDown : function () {
       
   122             delete this.data;
       
   123         },
       
   124         
       
   125         //---------------------------------------------------------------------
       
   126         // Test methods - names must begin with "test"
       
   127         //---------------------------------------------------------------------
       
   128         
       
   129         testName : function () {
       
   130             var Assert = Y.Assert;
       
   131             
       
   132             Assert.isObject(this.data);
       
   133             Assert.isString(this.data.name);
       
   134             Assert.areEqual("test", this.data.name);            
       
   135         },
       
   136         
       
   137         testYear : function () {
       
   138             var Assert = Y.Assert;
       
   139             
       
   140             Assert.isObject(this.data);
       
   141             Assert.isNumber(this.data.year);
       
   142             Assert.areEqual(2007, this.data.year);            
       
   143         },
       
   144         
       
   145         testBeta : function () {
       
   146             var Assert = Y.Assert;
       
   147             
       
   148             Assert.isObject(this.data);
       
   149             Assert.isBoolean(this.data.beta);
       
   150             Assert.isTrue(this.data.beta);
       
   151         }
       
   152     
       
   153     });
       
   154     
       
   155     Y.example.test.ArrayTestCase = new Y.Test.Case({
       
   156     
       
   157         //name of the test case - if not provided, one is auto-generated
       
   158         name : "Array Tests",
       
   159         
       
   160         //---------------------------------------------------------------------
       
   161         // setUp and tearDown methods - optional
       
   162         //---------------------------------------------------------------------
       
   163         
       
   164         /*
       
   165          * Sets up data that is needed by each test.
       
   166          */
       
   167         setUp : function () {
       
   168             this.data = [0,1,2,3,4]
       
   169         },
       
   170         
       
   171         /*
       
   172          * Cleans up everything that was created by setUp().
       
   173          */
       
   174         tearDown : function () {
       
   175             delete this.data;
       
   176         },
       
   177         
       
   178         //---------------------------------------------------------------------
       
   179         // Test methods - names must begin with "test"
       
   180         //---------------------------------------------------------------------
       
   181         
       
   182         testPop : function () {
       
   183             var Assert = Y.Assert;
       
   184             
       
   185             var value = this.data.pop();
       
   186             
       
   187             Assert.areEqual(4, this.data.length);
       
   188             Assert.areEqual(4, value);            
       
   189         },        
       
   190         
       
   191         testPush : function () {
       
   192             var Assert = Y.Assert;
       
   193             
       
   194             this.data.push(5);
       
   195             
       
   196             Assert.areEqual(6, this.data.length);
       
   197             Assert.areEqual(5, this.data[5]);            
       
   198         },
       
   199         
       
   200         testSplice : function () {
       
   201             var Assert = Y.Assert;
       
   202             
       
   203             this.data.splice(2, 1, 6, 7);
       
   204             
       
   205             Assert.areEqual(6, this.data.length);
       
   206             Assert.areEqual(6, this.data[2]);           
       
   207             Assert.areEqual(7, this.data[3]);           
       
   208         }
       
   209     
       
   210     });    
       
   211 
       
   212     Y.example.test.ExampleSuite = new Y.Test.Suite("Example Suite");
       
   213     Y.example.test.ExampleSuite.add(Y.example.test.DataTestCase);
       
   214     Y.example.test.ExampleSuite.add(Y.example.test.ArrayTestCase);
       
   215 
       
   216     //create the console
       
   217     var r = new Y.Console({
       
   218         newestOnTop : false,
       
   219         style: 'block' // to anchor in the example content
       
   220     });
       
   221     
       
   222     r.render('#testLogger');
       
   223     
       
   224     Y.Test.Runner.add(Y.example.test.ExampleSuite);
       
   225 
       
   226     //run the tests
       
   227     Y.Test.Runner.run();
       
   228 
       
   229 });
       
   230 </script>
       
   231 	
       
   232 	<!--END SOURCE CODE FOR EXAMPLE =============================== -->
       
   233 	
       
   234 		
       
   235 		</div>
       
   236 	</div>			
       
   237 	</div>
       
   238 		
       
   239 	<h2 class="first">Simple Test Example</h2>
       
   240 
       
   241 <p>This example begins by creating a namespace:</p>
       
   242 <div id="syntax1" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">Y.<span class="kw2">namespace</span><span class="br0">&#40;</span><span class="st0">&quot;example.test&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">Y.<span class="kw2">namespace</span><span class="br0">&#40;</span><span class="st0">&quot;example.test&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax1-plain">Y.namespace("example.test");</textarea></div><p>This namespace serves as the core object upon which others will be added (to prevent creating global objects).</p>
       
   243 
       
   244 <h3>Creating the first TestCase</h3>
       
   245 
       
   246 <p>The first step is to create a new <code>Y.Test.Case</code> object called <code>DataTestCase</code>.
       
   247   To do so, using the <code>Y.Test.Case</code> constructor and pass in an object literal containing information about the tests to be run:</p>
       
   248 <div id="syntax2" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">DataTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="kw1">Case</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//name of the test case - if not provided, one is auto-generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span> <span class="sy0">:</span> <span class="st0">&quot;Data Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">    <span class="co1">// setUp and tearDown methods - optional</span></div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">    <span class="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Sets up data that is needed by each test.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li1"><div class="de1">    setUp <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">this</span>.<span class="me1">data</span> <span class="sy0">=</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">            <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;test&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">            year<span class="sy0">:</span> <span class="nu0">2007</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">            beta<span class="sy0">:</span> <span class="kw2">true</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Cleans up everything that was created by setUp().</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li1"><div class="de1">    tearDown <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">        <span class="kw1">delete</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">    <span class="co1">// Test methods - names must begin with &quot;test&quot;</span></div></li><li class="li2"><div class="de2">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    testName <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isString</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="kw3">name</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="st0">&quot;test&quot;</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="kw3">name</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">    testYear <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isNumber</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">year</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">2007</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">year</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    testBeta <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isBoolean</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">beta</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isTrue</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">beta</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">DataTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="kw1">Case</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
       
   249 &nbsp;
       
   250     <span class="co1">//name of the test case - if not provided, one is auto-generated</span>
       
   251     <span class="kw3">name</span> <span class="sy0">:</span> <span class="st0">&quot;Data Tests&quot;</span><span class="sy0">,</span>
       
   252 &nbsp;
       
   253     <span class="co1">//---------------------------------------------------------------------</span>
       
   254     <span class="co1">// setUp and tearDown methods - optional</span>
       
   255     <span class="co1">//---------------------------------------------------------------------</span>
       
   256 &nbsp;
       
   257     <span class="coMULTI">/*
       
   258      * Sets up data that is needed by each test.
       
   259      */</span>
       
   260     setUp <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   261         <span class="kw1">this</span>.<span class="me1">data</span> <span class="sy0">=</span> <span class="br0">&#123;</span>
       
   262             <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;test&quot;</span><span class="sy0">,</span>
       
   263             year<span class="sy0">:</span> <span class="nu0">2007</span><span class="sy0">,</span>
       
   264             beta<span class="sy0">:</span> <span class="kw2">true</span>
       
   265         <span class="br0">&#125;</span><span class="sy0">;</span>
       
   266     <span class="br0">&#125;</span><span class="sy0">,</span>
       
   267 &nbsp;
       
   268     <span class="coMULTI">/*
       
   269      * Cleans up everything that was created by setUp().
       
   270      */</span>
       
   271     tearDown <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   272         <span class="kw1">delete</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="sy0">;</span>
       
   273     <span class="br0">&#125;</span><span class="sy0">,</span>
       
   274 &nbsp;
       
   275     <span class="co1">//---------------------------------------------------------------------</span>
       
   276     <span class="co1">// Test methods - names must begin with &quot;test&quot;</span>
       
   277     <span class="co1">//---------------------------------------------------------------------</span>
       
   278 &nbsp;
       
   279     testName <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   280         <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
       
   281 &nbsp;
       
   282         Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   283         Assert.<span class="me1">isString</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="kw3">name</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   284         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="st0">&quot;test&quot;</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="kw3">name</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   285     <span class="br0">&#125;</span><span class="sy0">,</span>
       
   286 &nbsp;
       
   287     testYear <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   288         <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
       
   289 &nbsp;
       
   290         Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   291         Assert.<span class="me1">isNumber</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">year</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   292         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">2007</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">year</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   293     <span class="br0">&#125;</span><span class="sy0">,</span>
       
   294 &nbsp;
       
   295     testBeta <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   296         <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
       
   297 &nbsp;
       
   298         Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   299         Assert.<span class="me1">isBoolean</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">beta</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   300         Assert.<span class="me1">isTrue</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">beta</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   301     <span class="br0">&#125;</span>
       
   302 &nbsp;
       
   303 <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax2-plain">Y.example.test.DataTestCase = new Y.Test.Case({
       
   304 
       
   305     //name of the test case - if not provided, one is auto-generated
       
   306     name : "Data Tests",
       
   307 
       
   308     //---------------------------------------------------------------------
       
   309     // setUp and tearDown methods - optional
       
   310     //---------------------------------------------------------------------
       
   311 
       
   312     /*
       
   313      * Sets up data that is needed by each test.
       
   314      */
       
   315     setUp : function () {
       
   316         this.data = {
       
   317             name: "test",
       
   318             year: 2007,
       
   319             beta: true
       
   320         };
       
   321     },
       
   322 
       
   323     /*
       
   324      * Cleans up everything that was created by setUp().
       
   325      */
       
   326     tearDown : function () {
       
   327         delete this.data;
       
   328     },
       
   329 
       
   330     //---------------------------------------------------------------------
       
   331     // Test methods - names must begin with "test"
       
   332     //---------------------------------------------------------------------
       
   333 
       
   334     testName : function () {
       
   335         var Assert = Y.Assert;
       
   336 
       
   337         Assert.isObject(this.data);
       
   338         Assert.isString(this.data.name);
       
   339         Assert.areEqual("test", this.data.name);
       
   340     },
       
   341 
       
   342     testYear : function () {
       
   343         var Assert = Y.Assert;
       
   344 
       
   345         Assert.isObject(this.data);
       
   346         Assert.isNumber(this.data.year);
       
   347         Assert.areEqual(2007, this.data.year);
       
   348     },
       
   349 
       
   350     testBeta : function () {
       
   351         var Assert = Y.Assert;
       
   352 
       
   353         Assert.isObject(this.data);
       
   354         Assert.isBoolean(this.data.beta);
       
   355         Assert.isTrue(this.data.beta);
       
   356     }
       
   357 
       
   358 });</textarea></div><p>The object literal passed into the constructor contains a number of different sections. The first section contains the <code>name</code> property,
       
   359   which is used to determine which <code>Y.Test.Case</code> is being executed. A name is necessary, so one is generated if it isn't specified.</p>
       
   360 <p>Next, the <code>setUp()</code> and <code>tearDown()</code> methods are included. The <code>setUp()</code> method is used in a <code>Y.Test.Case</code>
       
   361   to set up data that may be needed for tests to be completed. This method is called immediately before each test is executed. For this example,
       
   362   <code>setUp()</code> creates a data object. The <code>tearDown()</code> is responsible for undoing what was done in <code>setUp()</code>. It is
       
   363   run immediately after each test is run and, in this case, deletes the data object that was created by <code>setUp</code>. These methods are optional.</p>
       
   364 <p>The last section contains the actual tests to be run. Test method names must always begin with the word &quot;test&quot; (all lowercase) in order
       
   365   to differentiate them from other methods that may be added to the object.</p>
       
   366 <p>The first test in this object is <code>testName()</code>, which runs
       
   367   various assertions on <code>data.name</code>. Inside of this method, a shortcut to <code>Y.Assert</code> is set up and used to run three
       
   368   assertions: <code>isObject()</code> on <code>data</code>, <code>isString()</code> on <code>data.name</code> and <code>areEqual()</code> to compare
       
   369   <code>data.name</code> to the expected value, &quot;test&quot;. These assertions are arranged in order from least-specific to most-specific,
       
   370   which is the recommended way to arrange your assertions. Basically, the third assertion is useless to run unless the second has passes and the second
       
   371   can't possibly pass unless the first passed. Both <code>isObject()</code> and <code>isString()</code> accept a single argument, which is the value
       
   372   to test (you could optionally include a failure message as a second argument, though this is not required). The <code>areEqual()</code> method
       
   373   expects two arguments, the first being the expected value (&quot;test&quot;) and the second being the actual value (<code>data.name</code>).</p>
       
   374 <p>The second and third tests follow the same pattern as the first with the exception that they work with different data types. The <code>testYear()</code>
       
   375   method works with <code>data.year</code>, which is a number and so runs tests specifically for numbers (<code>areEqual()</code> can be used with
       
   376   all data types). The <code>testBeta()</code> method works with <code>data.beta</code>, which is a Boolean, and so it uses the <code>isTrue()</code>
       
   377   assertion instead of <code>areEqual()</code> (though it could also use <code>areEqual(true, this.data.beta)</code>).</p>
       
   378 
       
   379  <h3>Creating the second TestCase</h3>
       
   380 
       
   381  <p>Although it's possible that you'll have only one <code>Y.Test.Case</code> object, typically there is more than one, and so this example includes
       
   382    a second <code>Y.Test.Case</code>. This one tests some of the built-in functions of the <code>Array</code> object:</p>
       
   383  <div id="syntax3" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"> Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ArrayTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="kw1">Case</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//name of the test case - if not provided, one is auto-generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span> <span class="sy0">:</span> <span class="st0">&quot;Array Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">    <span class="co1">// setUp and tearDown methods - optional</span></div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">    <span class="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Sets up data that is needed by each test.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li1"><div class="de1">    setUp <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">this</span>.<span class="me1">data</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">2</span><span class="sy0">,</span><span class="nu0">3</span><span class="sy0">,</span><span class="nu0">4</span><span class="br0">&#93;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Cleans up everything that was created by setUp().</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li2"><div class="de2">    tearDown <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">delete</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li2"><div class="de2">    <span class="co1">// Test methods - names must begin with &quot;test&quot;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    testPop <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> value <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">pop</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> value<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    testPush <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">        <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">push</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">5</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    testSplice <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">splice</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">1</span><span class="sy0">,</span> <span class="nu0">6</span><span class="sy0">,</span> <span class="nu0">7</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">7</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"> Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ArrayTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="kw1">Case</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
       
   384 &nbsp;
       
   385     <span class="co1">//name of the test case - if not provided, one is auto-generated</span>
       
   386     <span class="kw3">name</span> <span class="sy0">:</span> <span class="st0">&quot;Array Tests&quot;</span><span class="sy0">,</span>
       
   387 &nbsp;
       
   388     <span class="co1">//---------------------------------------------------------------------</span>
       
   389     <span class="co1">// setUp and tearDown methods - optional</span>
       
   390     <span class="co1">//---------------------------------------------------------------------</span>
       
   391 &nbsp;
       
   392     <span class="coMULTI">/*
       
   393      * Sets up data that is needed by each test.
       
   394      */</span>
       
   395     setUp <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   396         <span class="kw1">this</span>.<span class="me1">data</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">2</span><span class="sy0">,</span><span class="nu0">3</span><span class="sy0">,</span><span class="nu0">4</span><span class="br0">&#93;</span>
       
   397     <span class="br0">&#125;</span><span class="sy0">,</span>
       
   398 &nbsp;
       
   399     <span class="coMULTI">/*
       
   400      * Cleans up everything that was created by setUp().
       
   401      */</span>
       
   402     tearDown <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   403         <span class="kw1">delete</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="sy0">;</span>
       
   404     <span class="br0">&#125;</span><span class="sy0">,</span>
       
   405 &nbsp;
       
   406     <span class="co1">//---------------------------------------------------------------------</span>
       
   407     <span class="co1">// Test methods - names must begin with &quot;test&quot;</span>
       
   408     <span class="co1">//---------------------------------------------------------------------</span>
       
   409 &nbsp;
       
   410     testPop <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   411         <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
       
   412 &nbsp;
       
   413         <span class="kw2">var</span> value <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">pop</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   414 &nbsp;
       
   415         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   416         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> value<span class="br0">&#41;</span><span class="sy0">;</span>
       
   417     <span class="br0">&#125;</span><span class="sy0">,</span>
       
   418 &nbsp;
       
   419     testPush <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   420         <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
       
   421 &nbsp;
       
   422         <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">push</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   423 &nbsp;
       
   424         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   425         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">5</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   426     <span class="br0">&#125;</span><span class="sy0">,</span>
       
   427 &nbsp;
       
   428     testSplice <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
       
   429         <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
       
   430 &nbsp;
       
   431         <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">splice</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">1</span><span class="sy0">,</span> <span class="nu0">6</span><span class="sy0">,</span> <span class="nu0">7</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   432 &nbsp;
       
   433         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   434         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   435         Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">7</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   436     <span class="br0">&#125;</span>
       
   437 &nbsp;
       
   438 <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax3-plain"> Y.example.test.ArrayTestCase = new Y.Test.Case({
       
   439 
       
   440     //name of the test case - if not provided, one is auto-generated
       
   441     name : "Array Tests",
       
   442 
       
   443     //---------------------------------------------------------------------
       
   444     // setUp and tearDown methods - optional
       
   445     //---------------------------------------------------------------------
       
   446 
       
   447     /*
       
   448      * Sets up data that is needed by each test.
       
   449      */
       
   450     setUp : function () {
       
   451         this.data = [0,1,2,3,4]
       
   452     },
       
   453 
       
   454     /*
       
   455      * Cleans up everything that was created by setUp().
       
   456      */
       
   457     tearDown : function () {
       
   458         delete this.data;
       
   459     },
       
   460 
       
   461     //---------------------------------------------------------------------
       
   462     // Test methods - names must begin with "test"
       
   463     //---------------------------------------------------------------------
       
   464 
       
   465     testPop : function () {
       
   466         var Assert = Y.Assert;
       
   467 
       
   468         var value = this.data.pop();
       
   469 
       
   470         Assert.areEqual(4, this.data.length);
       
   471         Assert.areEqual(4, value);
       
   472     },
       
   473 
       
   474     testPush : function () {
       
   475         var Assert = Y.Assert;
       
   476 
       
   477         this.data.push(5);
       
   478 
       
   479         Assert.areEqual(6, this.data.length);
       
   480         Assert.areEqual(5, this.data[5]);
       
   481     },
       
   482 
       
   483     testSplice : function () {
       
   484         var Assert = Y.Assert;
       
   485 
       
   486         this.data.splice(2, 1, 6, 7);
       
   487 
       
   488         Assert.areEqual(6, this.data.length);
       
   489         Assert.areEqual(6, this.data[2]);
       
   490         Assert.areEqual(7, this.data[3]);
       
   491     }
       
   492 
       
   493 });</textarea></div> <p>As with the first <code>Y.Test.Case</code>, this one is split up into three sections: the name, the <code>setUp()</code> and <code>tearDown()</code>
       
   494   methods, and the test methods. The <code>setUp()</code> method in this <code>Y.Test.Case</code> creates an array of data to be used by the various
       
   495   tests while the <code>tearDown()</code> method destroys the array. The test methods are very simple, testing the <code>pop()</code>, <code>push()</code>,
       
   496   and <code>splice()</code> methods. Each test method uses <code>areEqual()</code> exclusively, to show the different ways that it can be used.
       
   497   The <code>testPop()</code> method calls <code>pop()</code> on the array of values, then verifies that the length of the array has changed and
       
   498   that the value popped off is 4; the <code>testPush()</code> pushes a new value (5) onto the array and then verifies that the length of the array has
       
   499   changed and that the value is included in the correct location; the <code>testSplice()</code> method tests  <code>splice()</code> by removing one
       
   500   value that's already in the array and inserting two in its place.</p>
       
   501 
       
   502 <h3>Creating the TestSuite</h3>
       
   503 <p>To better organize the two <code>Y.Test.Case</code> objects, a <code>Y.Test.Suite</code> is created and those two <code>Y.Test.Case</code> objects are
       
   504   added to it:</p>
       
   505 <div id="syntax4" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="me1">Suite</span><span class="br0">&#40;</span><span class="st0">&quot;Example Suite&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">DataTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ArrayTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="me1">Suite</span><span class="br0">&#40;</span><span class="st0">&quot;Example Suite&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   506 Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">DataTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   507 Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ArrayTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax4-plain">Y.example.test.ExampleSuite = new Y.Test.Suite("Example Suite");
       
   508 Y.example.test.ExampleSuite.add(Y.example.test.DataTestCase);
       
   509 Y.example.test.ExampleSuite.add(Y.example.test.ArrayTestCase);</textarea></div><p>The first line creates a new <code>Y.Test.Suite</code> object using its constructor, which accepts a single argument - the name of the suite. As with
       
   510   the name of a <code>Y.Test.Case</code>, the <code>Y.Test.Suite</code> name is used to determine where execution is when tests are being executed. Although
       
   511   not required (one is generated if it's not provided), it is recommended that you select a meaningful name to aid in debugging.</p>
       
   512 <p>Any number of <code>Y.Test.Case</code> and <code>Y.Test.Suite</code> objects can be added to a <code>Y.Test.Suite</code> by using the <code>add()</code>
       
   513   method. In this example, the two <code>Y.Test.Case</code> objects created earlier are added to the <code>Y.Test.Suite</code>.</p>
       
   514 
       
   515 <h3>Running the tests</h3>
       
   516 
       
   517 <p>With all of the tests defined, the last step is to run them. This initialization is assigned to take place when all of the YUI
       
   518   components have been loaded:</p>
       
   519 
       
   520 <div id="syntax5" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">//create the console</span></div></li><li class="li1"><div class="de1"><span class="kw2">var</span> r <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Console</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    verbose <span class="sy0">:</span> <span class="kw2">true</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">    newestOnTop <span class="sy0">:</span> <span class="kw2">false</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">r.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">'#testLogger'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">Y.<span class="me1">Test</span>.<span class="me1">Runner</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">//run the tests</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">Test</span>.<span class="me1">Runner</span>.<span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">&nbsp;
       
   521 <span class="co1">//create the console</span>
       
   522 <span class="kw2">var</span> r <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Console</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
       
   523     verbose <span class="sy0">:</span> <span class="kw2">true</span><span class="sy0">,</span>
       
   524     newestOnTop <span class="sy0">:</span> <span class="kw2">false</span>
       
   525 <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   526 &nbsp;
       
   527 r.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">'#testLogger'</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   528 &nbsp;
       
   529 Y.<span class="me1">Test</span>.<span class="me1">Runner</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span><span class="br0">&#41;</span><span class="sy0">;</span>
       
   530 &nbsp;
       
   531 <span class="co1">//run the tests</span>
       
   532 Y.<span class="me1">Test</span>.<span class="me1">Runner</span>.<span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax5-plain">
       
   533 //create the console
       
   534 var r = new Y.Console({
       
   535     verbose : true,
       
   536     newestOnTop : false
       
   537 });
       
   538 
       
   539 r.render('#testLogger');
       
   540 
       
   541 Y.Test.Runner.add(Y.example.test.ExampleSuite);
       
   542 
       
   543 //run the tests
       
   544 Y.Test.Runner.run();</textarea></div>
       
   545 <p>Before running the tests, it's necessary to create a <code>Y.Console</code> object to display the results (otherwise the tests would run
       
   546   but you wouldn't see the results). After that, the <code>Y.Test.Runner</code> is loaded with the <code>Y.Test.Suite</code> object by calling
       
   547   <code>add()</code> (any number of <code>Y.Test.Case</code> and <code>Y.Test.Suite</code> objects can be added to a <code>Y.Test.Runner</code>,
       
   548   this example only adds one for simplicity). The very last step is to call <code>run()</code>, which begins executing the tests in its
       
   549   queue and displays the results in the <code>Y.Console</code>.</p>				</div>
       
   550 				<div class="yui-u sidebar">
       
   551 					
       
   552 				
       
   553 					<div id="examples" class="mod box4">
       
   554                         <div class="hd">
       
   555 						<h4>
       
   556     Test Examples:</h4>
       
   557                         </div>
       
   558 						<div class="bd">
       
   559 							<ul>
       
   560 								<li class='selected'><a href='../test/test-simple-example.html'>Simple Testing Example</a></li><li><a href='../test/test-advanced-test-options.html'>Advanced Test Options</a></li><li><a href='../test/test-array-tests.html'>Array Processing</a></li><li><a href='../test/test-async-test.html'>Asynchronous Testing</a></li><li><a href='../test/test-async-event-tests.html'>Asynchronous Event Testing</a></li>							</ul>
       
   561 						</div>
       
   562 					</div>
       
   563 					
       
   564 					<div class="mod box4">
       
   565                         <div class="hd">
       
   566 						<h4>More Test Resources:</h4>
       
   567                         </div>
       
   568                         <div class="bd">
       
   569 						<ul>
       
   570 							<!-- <li><a href="http://developer.yahoo.com/yui/test/">User's Guide</a> (external)</li> -->
       
   571 <li><a href="../../api/module_test.html">API Documentation</a></li></ul>
       
   572                         </div>
       
   573 					</div>
       
   574 			  </div>
       
   575 		</div>
       
   576 		
       
   577 		</div>
       
   578 	</div>
       
   579 
       
   580 
       
   581 <div class="yui-b toc3" id="tocWrapper">
       
   582 <!-- TABLE OF CONTENTS -->
       
   583 <div id="toc">
       
   584 	
       
   585 <ul>
       
   586 <li class="sect first">YUI 3 Resources</li><li class="item"><a title="YUI 3 -- Yahoo! User Interface (YUI) Library" href="http://developer.yahoo.com/yui/3/">YUI 3 Web Site</a></li><li class="item"><a title="Examples of every YUI utility and control in action" href="../../examples/">YUI 3 Examples</a></li><li class="item"><a title="Instantly searchable API documentation for the entire YUI library." href="../../api/">YUI 3 API Docs</a></li><li class="item"><a title="YUI 3 Dependency Configurator -- configure your custom YUI implementation" href="http://developer.yahoo.com/yui/3/configurator">YUI 3 Dependency Configurator</a></li><li class="item"><a title="The YUI 3 Forum on YUILibrary.com" href="http://yuilibrary.com/forum/viewforum.php?f=15">YUI 3 Forums (external)</a></li><li class="item"><a title="Found a bug or a missing feature? Let us know on YUILibrary.com." href="http://developer.yahoo.com/yui/articles/reportingbugs/">Bug Reports/Feature Requests</a></li><li class="item"><a title="YUI is free and open, offered under a BSD license." href="http://developer.yahoo.com/yui/license.html">YUI License</a></li><li class="item"><a title="Download and fork the YUI project on GitHub" href="http://github.com/yui">YUI on Github</a></li><li class="item"><a title="The Yahoo! User Interface Blog" href="http://yuiblog.com">YUI Blog (external)</a></li><li class="sect">YUI 3 Core - Examples</li><li class="item"><a title="YUI Global Object - Functional Examples" href="../../examples/yui/index.html">YUI Global Object</a></li><li class="item"><a title="Event - Functional Examples" href="../../examples/event/index.html">Event</a></li><li class="item"><a title="Node - Functional Examples" href="../../examples/node/index.html">Node</a></li><li class="sect">YUI 3 Component Infrastructure - Examples</li><li class="item"><a title="Attribute - Functional Examples" href="../../examples/attribute/index.html">Attribute</a></li><li class="item"><a title="Plugin - Functional Examples" href="../../examples/plugin/index.html">Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Widget - Functional Examples" href="../../examples/widget/index.html">Widget <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Utilities - Examples</li><li class="item"><a title="Animation - Functional Examples" href="../../examples/anim/index.html">Animation</a></li><li class="item"><a title="AsyncQueue - Functional Examples" href="../../examples/async-queue/index.html">AsyncQueue</a></li><li class="item"><a title="Browser History - Functional Examples" href="../../examples/history/index.html">Browser History</a></li><li class="item"><a title="Cache - Functional Examples" href="../../examples/cache/index.html">Cache</a></li><li class="item"><a title="Cookie - Functional Examples" href="../../examples/cookie/index.html">Cookie</a></li><li class="item"><a title="DataSchema - Functional Examples" href="../../examples/dataschema/index.html">DataSchema <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataSource - Functional Examples" href="../../examples/datasource/index.html">DataSource <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataType - Functional Examples" href="../../examples/datatype/index.html">DataType <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Drag &amp; Drop - Functional Examples" href="../../examples/dd/index.html">Drag &amp; Drop</a></li><li class="item"><a title="Get - Functional Examples" href="../../examples/get/index.html">Get</a></li><li class="item"><a title="ImageLoader - Functional Examples" href="../../examples/imageloader/index.html">ImageLoader</a></li><li class="item"><a title="IO - Functional Examples" href="../../examples/io/index.html">IO</a></li><li class="item"><a title="JSON (JavaScript Object Notation) - Functional Examples" href="../../examples/json/index.html">JSON</a></li><li class="item"><a title="Stylesheet - Functional Examples" href="../../examples/stylesheet/index.html">Stylesheet</a></li><li class="sect">YUI 3 Widgets - Examples</li><li class="item"><a title="Overlay - Functional Examples" href="../../examples/overlay/index.html">Overlay <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Slider - Functional Examples" href="../../examples/slider/index.html">Slider <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Node Plugins - Examples</li><li class="item"><a title="FocusManager Node Plugin - Functional Examples" href="../../examples/node-focusmanager/index.html">FocusManager Node Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="MenuNav Node Plugin - Functional Examples" href="../../examples/node-menunav/index.html">MenuNav Node Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 CSS - Examples</li><li class="item"><a title="YUI CSS Reset - Functional Examples" href="../../examples/cssreset/index.html">CSS Reset</a></li><li class="item"><a title="YUI Fonts - Functional Examples" href="../../examples/cssfonts/index.html">CSS Fonts</a></li><li class="item"><a title="YUI Base - Functional Examples" href="../../examples/cssbase/index.html">CSS Base</a></li><li class="sect">YUI 3 Developer Tools - Examples</li><li class="item"><a title="Console - Functional Examples" href="../../examples/console/index.html">Console <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Console Filters Plugin- Functional Examples" href="../../examples/console-filters/index.html">Plugin.ConsoleFilters <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Profiler - Functional Examples" href="../../examples/profiler/index.html">Profiler</a></li><li class="selected "><a title="Test - Functional Examples" href="../../examples/test/index.html">Test</a></li><li class="sect">Other Useful YUI 3 Resources</li><li class="item"><a title="Answers to Frequently Asked Questions about the YUI Library" href="http://developer.yahoo.com/yui/articles/faq/">YUI FAQ (external)</a></li><li class="item"><a title="Yahoo!'s philosophy of Graded Browser Support" href="http://developer.yahoo.com/yui/articles/gbs/">Graded Browser Support (external)</a></li><li class="item"><a title="Videos and podcasts from the YUI Team and from the Yahoo! frontend engineering community." href="http://developer.yahoo.com/yui/theater/">YUI Theater (external)</a></li></ul>
       
   587 </div>
       
   588 </div>
       
   589 	</div><!--closes bd-->
       
   590 
       
   591 	<div id="ft">
       
   592         <p class="first">Copyright &copy; 2009 Yahoo! Inc. All rights reserved.</p>
       
   593         <p><a href="http://privacy.yahoo.com/privacy/us/devel/index.html">Privacy Policy</a> - 
       
   594             <a href="http://docs.yahoo.com/info/terms/">Terms of Service</a> - 
       
   595             <a href="http://docs.yahoo.com/info/copyright/copyright.html">Copyright Policy</a> - 
       
   596             <a href="http://careers.yahoo.com/">Job Openings</a></p>
       
   597 	</div>
       
   598 </div>
       
   599 <script language="javascript"> 
       
   600 var yuiConfig = {base:"../../build/", timeout: 10000};
       
   601 </script>
       
   602 <script src="../../assets/syntax.js"></script>
       
   603 <script src="../../assets/dpSyntaxHighlighter.js"></script>
       
   604 <script language="javascript"> 
       
   605 dp.SyntaxHighlighter.HighlightAll('code'); 
       
   606 </script>
       
   607 </body>
       
   608 </html>