src/cm/media/js/lib/yui/yui3.0.0/examples/test/test-advanced-test-options.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<title>YUI Library Examples: Test: Advanced Test Options</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    	<link rel="stylesheet" type="text/css" href="../../assets/yui.css" >

<style>
    /*Supplemental CSS for the YUI distribution*/
    #custom-doc { width: 95%; min-width: 950px; }
    #pagetitle {background-image: url(../../assets/bg_hd.gif);}
/*    #pagetitle h1 {background-image: url(../../assets/title_h_bg.gif);}*/
</style>

<link rel="stylesheet" type="text/css" href="../../assets/dpSyntaxHighlighter.css">
<link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
<script type="text/javascript" src="../../build/yui/yui-min.js"></script>
<style type="text/css">
#testLogger {
    margin-bottom: 1em;
}

#testLogger .yui-console .yui-console-title {
    border: 0 none;
    color: #000;
    font-size: 13px;
    font-weight: bold;
    margin: 0;
    text-transform: none;
}
#testLogger .yui-console .yui-console-entry-meta {
    margin: 0;
}

.yui-skin-sam .yui-console-entry-pass .yui-console-entry-cat {
    background: #070;
    color: #fff;
}
.yui-skin-sam .yui-console-entry-fail .yui-console-entry-cat {
    background: #700;
    color: #fff;
}
</style>

</head>
<body id="yahoo-com" class=" yui-skin-sam">
<div id="custom-doc" class="yui-t2">
<div id="hd">
	<div id="ygunav">
		<p>
            <em>
                <a href="http://developer.yahoo.com/yui/3/">YUI 3.x Home</a> <i> - </i>	
            </em>
		</p>
		<form action="http://search.yahoo.com/search" id="sitesearchform">
            <input name="vs" type="hidden" value="developer.yahoo.com">
            <input name="vs" type="hidden" value="yuiblog.com">
		    <div id="sitesearch">
		    	<label for="searchinput">Site Search (YDN &amp; YUIBlog): </label>
			    <input type="text" id="searchinput" name="p">
			    <input type="submit" value="Search" id="searchsubmit" class="ygbt">
		    </div>
		</form>
    </div>
	<div id="ygma"><a href="../../"><img src="../../assets/logo.gif"  border="0" width="200" height="93"></a></div>
	<div id="pagetitle"><h1>YUI Library Examples: Test: Advanced Test Options</h1></div>
</div>
<div id="bd">


	<div id="yui-main">
		<div class="yui-b">
		  <div class="yui-ge">
			  <div class="yui-u first example" id="main">

	<h2>Test: Advanced Test Options</h2>

	<div id="example" class="promo">
	<div class="example-intro">
	<p>This example shows how to use advanced test options, which allow you to specify additional information about how a test should be run.
  Each <a href="/yui/test/#testcase"><code>TestCase</code></a> can specify up to three different options for tests,
  including tests that should be ignored, tests that should throw an error, and tests that should fail.</p>	</div>	

	<div class="module example-container ">
			<div class="hd exampleHd">
			<p class="newWindowButton yui-skin-sam">
                <a href="test-advanced-test-options_clean.html" target="_blank">View example in new window.</a>
            </p>
		</div>		<div id="example-canvas" class="bd">

		
	<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
	
	<div id="testLogger"></div>
<script type="text/javascript">
YUI({base:"../../build/", timeout: 10000}).use("node", "console", "test",function (Y) {

    Y.namespace("example.test");
    
    Y.example.test.AdvancedOptionsTestCase = new Y.Test.Case({
    
        //the name of the test case - if not provided, one is automatically generated
        name: "Advanced Options Tests",
        
        /*
         * Specifies tests that "should" be doing something other than the expected.
         */
        _should: {
        
            /*
             * Tests listed in here should fail, meaning that if they fail, the test
             * has passed. This is used mostly for YuiTest to test itself, but may
             * be helpful in other cases.
             */
            fail: {
            
                //the test named "testFail" should fail
                testFail: true
            
            },
            
            /*
             * Tests listed here should throw an error of some sort. If they throw an
             * error, then they are considered to have passed.
             */
            error: {
            
                /*
                 * You can specify "true" for each test, in which case any error will
                 * cause the test to pass.
                 */
                testGenericError: true,
                
                /*
                 * You can specify an error message, in which case the test passes only
                 * if the error thrown matches the given message.
                 */
                testStringError: "I'm a specific error message.",
                testStringError2: "I'm a specific error message.",
                
                /*
                 * You can also specify an error object, in which case the test passes only
                 * if the error thrown is on the same type and has the same message.
                 */
                testObjectError: new TypeError("Number expected."),            
                testObjectError2: new TypeError("Number expected."),
                testObjectError3: new TypeError("Number expected.")
            
            },
            
            /*
             * Tests listed here should be ignored when the test case is run. For these tests,
             * setUp() and tearDown() are not called.
             */
            ignore : {
            
                testIgnore: true
                
            }    
        },
        
        //-------------------------------------------------------------------------
        // Basic tests - all method names must begin with "test"
        //-------------------------------------------------------------------------
        
        testFail : function() {
        
            //force a failure - but since this test "should" fail, it will pass
            Y.Assert.fail("Something bad happened.");
            
        },
        
        testGenericError : function() {    
            throw new Error("Generic error");        
        },
        
        testStringError : function() {
            
            //throw a specific error message - this will pass because it "should" happen
            throw new Error("I'm a specific error message.");    
        },
        
        testStringError2 : function() {
            
            //throw a specific error message - this will fail because the message isn't expected
            throw new Error("I'm a specific error message, but a wrong one.");    
        },
        
        testObjectError : function() {
            
            //throw a specific error and message - this will pass because it "should" happen
            throw new TypeError("Number expected.");    
        },
        
        testObjectError2 : function() {
            
            //throw a specific error and message - this will fail because the type doesn't match
            throw new Error("Number expected."); 
        },
        
        testObjectError3 : function() {
            
            //throw a specific error and message - this will fail because the message doesn't match
            throw new TypeError("String expected.");    
        },
        
        testIgnore : function () {
            alert("You'll never see this.");
        }
        
    });        
     
     
    //create the console
    var r = new Y.Console({
        newestOnTop : false,
        style: 'block' // to anchor in the example content
    });
    
    r.render('#testLogger');
    
    Y.Test.Runner.add(Y.example.test.AdvancedOptionsTestCase);

    //run the tests
    Y.Test.Runner.run();
});

</script>
	
	<!--END SOURCE CODE FOR EXAMPLE =============================== -->
	
		
		</div>
	</div>			
	</div>
		
	<h2 class="first">Advanced Test Options</h2>

<p>This example begins by creating a namespace and a <code>Y.Test.Case</code> object:</p>
<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><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">AdvancedOptionsTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">TestCase</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</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></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>
Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">AdvancedOptionsTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">TestCase</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax1-plain">Y.namespace("example.test");
Y.example.test.AdvancedOptionsTestCase = new Y.TestCase({
    name: "Advanced Options Tests"
});</textarea></div>
<p>This <code>Y.Test.Case</code> serves as the basis for this example.</p>

<h3>Using <code>_should</code></h3>

<p>Immediately after the <code>name</code> of the <code>Y.Test.Case</code> is defined, there is a <code>_should</code> property.
  This property specifies information about how tests <em>should</em> behave and is defined as an object literal with one
  or more of the following properties: <code>fail</code>, <code>error</code>, and <code>ignore</code>.Each of these three
  is also defined as an object literal whose property names map directly to the names of test methods in the <code>Y.Test.Case</code>.
  This example uses all three properties:</p>
<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">AdvancedOptionsTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">TestCase</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">//the name of the test case - if not provided, one is automatically generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options 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="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Specifies tests that &quot;should&quot; be doing something other than the expected.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li1"><div class="de1">    _should<span class="sy0">:</span> <span class="br0">&#123;</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;        * Tests listed in here should fail, meaning that if they fail, the test</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;        * has passed. This is used mostly for YuiTest to test itself, but may</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;        * be helpful in other cases.</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp;        */</span></div></li><li class="li1"><div class="de1">        fail<span class="sy0">:</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">//the test named &quot;testFail&quot; should fail</span></div></li><li class="li1"><div class="de1">            testFail<span class="sy0">:</span> <span class="kw2">true</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="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;        * Tests listed here should throw an error of some sort. If they throw an</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp;        * error, then they are considered to have passed.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;        */</span></div></li><li class="li1"><div class="de1">        error<span class="sy0">:</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="coMULTI">/*</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp;            * You can specify &quot;true&quot; for each test, in which case any error will</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;            * cause the test to pass.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;            */</span></div></li><li class="li1"><div class="de1">            testGenericError<span class="sy0">:</span> <span class="kw2">true</span><span class="sy0">,</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;            * You can specify an error message, in which case the test passes only</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;            * if the error thrown matches the given message.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;            */</span></div></li><li class="li1"><div class="de1">            testStringError<span class="sy0">:</span> <span class="st0">&quot;I'm a specific error message.&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">            testStringError2<span class="sy0">:</span> <span class="st0">&quot;I'm a specific error message.&quot;</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;            * You can also specify an error object, in which case the test passes only</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;            * if the error thrown is on the same type and has the same message.</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp;            */</span></div></li><li class="li1"><div class="de1">            testObjectError<span class="sy0">:</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</span><span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">            testObjectError2<span class="sy0">:</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</span><span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">            testObjectError3<span class="sy0">:</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp;</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;        * Tests listed here should be ignored when the test case is run. For these tests,</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;        * setUp() and tearDown() are not called.</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp;        */</span></div></li><li class="li1"><div class="de1">        ignore <span class="sy0">:</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">            testIgnore<span class="sy0">:</span> <span class="kw2">true</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">        <span class="br0">&#125;</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">    ...</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">AdvancedOptionsTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">TestCase</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
&nbsp;
    <span class="co1">//the name of the test case - if not provided, one is automatically generated</span>
    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span>
&nbsp;
    <span class="coMULTI">/*
     * Specifies tests that &quot;should&quot; be doing something other than the expected.
     */</span>
    _should<span class="sy0">:</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="coMULTI">/*
         * Tests listed in here should fail, meaning that if they fail, the test
         * has passed. This is used mostly for YuiTest to test itself, but may
         * be helpful in other cases.
         */</span>
        fail<span class="sy0">:</span> <span class="br0">&#123;</span>
&nbsp;
            <span class="co1">//the test named &quot;testFail&quot; should fail</span>
            testFail<span class="sy0">:</span> <span class="kw2">true</span>
&nbsp;
        <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
        <span class="coMULTI">/*
         * Tests listed here should throw an error of some sort. If they throw an
         * error, then they are considered to have passed.
         */</span>
        error<span class="sy0">:</span> <span class="br0">&#123;</span>
&nbsp;
            <span class="coMULTI">/*
             * You can specify &quot;true&quot; for each test, in which case any error will
             * cause the test to pass.
             */</span>
            testGenericError<span class="sy0">:</span> <span class="kw2">true</span><span class="sy0">,</span>
&nbsp;
            <span class="coMULTI">/*
             * You can specify an error message, in which case the test passes only
             * if the error thrown matches the given message.
             */</span>
            testStringError<span class="sy0">:</span> <span class="st0">&quot;I'm a specific error message.&quot;</span><span class="sy0">,</span>
            testStringError2<span class="sy0">:</span> <span class="st0">&quot;I'm a specific error message.&quot;</span><span class="sy0">,</span>
&nbsp;
            <span class="coMULTI">/*
             * You can also specify an error object, in which case the test passes only
             * if the error thrown is on the same type and has the same message.
             */</span>
            testObjectError<span class="sy0">:</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</span><span class="br0">&#41;</span><span class="sy0">,</span>
            testObjectError2<span class="sy0">:</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</span><span class="br0">&#41;</span><span class="sy0">,</span>
            testObjectError3<span class="sy0">:</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</span><span class="br0">&#41;</span>
&nbsp;
        <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
        <span class="coMULTI">/*
         * Tests listed here should be ignored when the test case is run. For these tests,
         * setUp() and tearDown() are not called.
         */</span>
        ignore <span class="sy0">:</span> <span class="br0">&#123;</span>
&nbsp;
            testIgnore<span class="sy0">:</span> <span class="kw2">true</span>
&nbsp;
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    ...
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax2-plain">Y.example.test.AdvancedOptionsTestCase = new Y.TestCase({

    //the name of the test case - if not provided, one is automatically generated
    name: "Advanced Options Tests",

    /*
     * Specifies tests that "should" be doing something other than the expected.
     */
    _should: {

        /*
         * Tests listed in here should fail, meaning that if they fail, the test
         * has passed. This is used mostly for YuiTest to test itself, but may
         * be helpful in other cases.
         */
        fail: {

            //the test named "testFail" should fail
            testFail: true

        },

        /*
         * Tests listed here should throw an error of some sort. If they throw an
         * error, then they are considered to have passed.
         */
        error: {

            /*
             * You can specify "true" for each test, in which case any error will
             * cause the test to pass.
             */
            testGenericError: true,

            /*
             * You can specify an error message, in which case the test passes only
             * if the error thrown matches the given message.
             */
            testStringError: "I'm a specific error message.",
            testStringError2: "I'm a specific error message.",

            /*
             * You can also specify an error object, in which case the test passes only
             * if the error thrown is on the same type and has the same message.
             */
            testObjectError: new TypeError("Number expected."),
            testObjectError2: new TypeError("Number expected."),
            testObjectError3: new TypeError("Number expected.")

        },

        /*
         * Tests listed here should be ignored when the test case is run. For these tests,
         * setUp() and tearDown() are not called.
         */
        ignore : {

            testIgnore: true

        }
    },

    ...
});</textarea></div>
<p>This <code>Y.Test.Case</code> specifies one test that should fail, six that should throw an error, and one that should be ignored.</p>
<p>In the <code>fail</code> section, the test method <code>testFail()</code> is specified as one that should fail. By adding the
  property <code>testFail</code> and settings its value to true, the <code>Y.Test.Runner</code> knows that this test is expected to fail.
  If the test were to be run without failing, it would be considered a failure of the test. This feature is useful when testing
  YUI Test itself or addon components to YUI Test.</p>
<p>Moving on to the <code>error</code> section, there are six tests specified that should throw an error. There are three different ways
  to indicate that a test is expected to throw an error. The first is simply to add a property with the same name as the test method
  and set its value equal to true (similar to specifying tests that should fail). In this example, the <code>testGenericError()</code>
  method is specified this way. When specified like this, the test passes regardless of the type of error that occurs. This can be
  dangerous since unexpected errors will also cause the test to pass. To be more specific, set the property value for the test method
  to an error message string. When a string is used instead of the Boolean true, the test passes only when an error is thrown and that
  error message matches the string. In this example, <code>testStringError()</code> and <code>testStringError2()</code> expect an error
  to be thrown with an error message of &quot;I'm a specific error message.&quot; If any other error occurs inside of the these methods,
  the test will fail because the error message doesn't match. The last way to specify an error should occur is to create an actual error
  object, which is the case with <code>testObjectError()</code>, <code>testObjectError2()</code>, and <code>testObjectError3()</code>.
  When specified in this way, a test will pass only when an error is thrown whose constructor and error message match that of the
  error object.</p>
<p>The last section is <code>ignore</code>, which determines tests that should be ignored. In this example, the method <code>testIgnore()</code>
  is set to be ignored when the <code>Y.Test.Case</code> is executed. Test in the <code>ignore</code> section are specified the same way
  as those in the <code>fail</code> section, by adding the name as a property and setting its value to true.</p>

<h3>Creating the test methods</h3>

<p>The next part of the example contains the actual test methods. Since each test method is specified as having a certain behavior in
  <code>_should</code>, they each do something to show their particular functionality.</p>
<p>The first method is <code>testFail()</code>, which does nothing but purposely fail. Since this method is specified as one that should
  fail, it means that this test will pass:</p>
<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">AdvancedOptionsTestCase</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">//the name of the test case - if not provided, one is automatically generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    ...</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="me1">testFail</span> <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">&nbsp;</div></li><li class="li2"><div class="de2">        <span class="co1">//force a failure - but since this test &quot;should&quot; fail, it will pass</span></div></li><li class="li1"><div class="de1">        Y.<span class="me1">Assert</span>.<span class="me1">fail</span><span class="br0">&#40;</span><span class="st0">&quot;Something bad happened.&quot;</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="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">    ...</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">AdvancedOptionsTestCase</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>
&nbsp;
    <span class="co1">//the name of the test case - if not provided, one is automatically generated</span>
    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span>
&nbsp;
    ...
&nbsp;
    <span class="me1">testFail</span> <span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="co1">//force a failure - but since this test &quot;should&quot; fail, it will pass</span>
        Y.<span class="me1">Assert</span>.<span class="me1">fail</span><span class="br0">&#40;</span><span class="st0">&quot;Something bad happened.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    ...
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax3-plain">Y.example.test.AdvancedOptionsTestCase = new Y.Test.Case({

    //the name of the test case - if not provided, one is automatically generated
    name: "Advanced Options Tests",

    ...

    testFail : function() {

        //force a failure - but since this test "should" fail, it will pass
        Y.Assert.fail("Something bad happened.");

    },

    ...
});</textarea></div><p>This method uses <code>Assert.fail()</code> to force the test to fail. This type of method is helpful if you are creating your own
  type of assert methods that should fail when certain data is passed in.</p>
<p>Next, the test methods that should error are defined.  The <code>testGenericError()</code> method is specified as needing to throw
  an error to pass. In the <code>error</code> section, <code>testGenericError</code> is set to true, meaning that any error causes
  this method to pass. To illustrate this, the method simply throws an error:</p>
<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">AdvancedOptionsTestCase</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">//the name of the test case - if not provided, one is automatically generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    ...</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="me1">testGenericError</span> <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">throw</span> <span class="kw2">new</span> Error<span class="br0">&#40;</span><span class="st0">&quot;Generic error&quot;</span><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">    ...</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">AdvancedOptionsTestCase</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>
&nbsp;
    <span class="co1">//the name of the test case - if not provided, one is automatically generated</span>
    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span>
&nbsp;
    ...
&nbsp;
    <span class="me1">testGenericError</span> <span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">throw</span> <span class="kw2">new</span> Error<span class="br0">&#40;</span><span class="st0">&quot;Generic error&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    ...
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax4-plain">Y.example.test.AdvancedOptionsTestCase = new Y.Test.Case({

    //the name of the test case - if not provided, one is automatically generated
    name: "Advanced Options Tests",

    ...

    testGenericError : function() {
        throw new Error("Generic error");
    },

    ...
});</textarea></div><p>The fact that this method throws an error is enough to cause it to pass (the type of error and error message don't matter). The next
  two methods, <code>testStringError()</code> and <code>testStringError2()</code> are specified as throwing an error with a specific
  message (&quot;I'm a specific error message.&quot;):</p>
<div id="syntax5" 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">AdvancedOptionsTestCase</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">//the name of the test case - if not provided, one is automatically generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    ...</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="me1">testStringError</span> <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">&nbsp;</div></li><li class="li2"><div class="de2">        <span class="co1">//throw a specific error message - this will pass because it &quot;should&quot; happen</span></div></li><li class="li1"><div class="de1">        <span class="kw1">throw</span> <span class="kw2">new</span> Error<span class="br0">&#40;</span><span class="st0">&quot;I'm a specific error message.&quot;</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">    testStringError2 <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">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="co1">//throw a specific error message - this will fail because the message isn't expected</span></div></li><li class="li1"><div class="de1">        <span class="kw1">throw</span> <span class="kw2">new</span> Error<span class="br0">&#40;</span><span class="st0">&quot;I'm a specific error message, but a wrong one.&quot;</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">    ...</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">AdvancedOptionsTestCase</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>
&nbsp;
    <span class="co1">//the name of the test case - if not provided, one is automatically generated</span>
    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span>
&nbsp;
    ...
&nbsp;
    <span class="me1">testStringError</span> <span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="co1">//throw a specific error message - this will pass because it &quot;should&quot; happen</span>
        <span class="kw1">throw</span> <span class="kw2">new</span> Error<span class="br0">&#40;</span><span class="st0">&quot;I'm a specific error message.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    testStringError2 <span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="co1">//throw a specific error message - this will fail because the message isn't expected</span>
        <span class="kw1">throw</span> <span class="kw2">new</span> Error<span class="br0">&#40;</span><span class="st0">&quot;I'm a specific error message, but a wrong one.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    ...
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax5-plain">Y.example.test.AdvancedOptionsTestCase = new Y.Test.Case({

    //the name of the test case - if not provided, one is automatically generated
    name: "Advanced Options Tests",

    ...

    testStringError : function() {

        //throw a specific error message - this will pass because it "should" happen
        throw new Error("I'm a specific error message.");
    },

    testStringError2 : function() {

        //throw a specific error message - this will fail because the message isn't expected
        throw new Error("I'm a specific error message, but a wrong one.");
    },

    ...
});</textarea></div><p>The <code>testStringError()</code> method will pass when executed because the error message matches up exactly with the one
  specified in the <code>error</code> section. The <code>testStringError2()</code> method, however, will fail because its
  error message is different from the one specified.</p>
<p>To be more specific, <code>testObjectError()</code>, <code>testObjectError2()</code>, and <code>testObjectError3()</code>,
  specified an error type (<code>TypeError</code>) and an error messsage (&quot;Number expected.&quot;):</p>
<div id="syntax6" 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">AdvancedOptionsTestCase</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">//the name of the test case - if not provided, one is automatically generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    ...</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="me1">testObjectError</span> <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">&nbsp;</div></li><li class="li2"><div class="de2">        <span class="co1">//throw a specific error and message - this will pass because it &quot;should&quot; happen</span></div></li><li class="li1"><div class="de1">        <span class="kw1">throw</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</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">    testObjectError2 <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">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="co1">//throw a specific error and message - this will fail because the type doesn't match</span></div></li><li class="li1"><div class="de1">        <span class="kw1">throw</span> <span class="kw2">new</span> Error<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</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">    testObjectError3 <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">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="co1">//throw a specific error and message - this will fail because the message doesn't match</span></div></li><li class="li1"><div class="de1">        <span class="kw1">throw</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;String expected.&quot;</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">    ...</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">AdvancedOptionsTestCase</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>
&nbsp;
    <span class="co1">//the name of the test case - if not provided, one is automatically generated</span>
    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span>
&nbsp;
    ...
&nbsp;
    <span class="me1">testObjectError</span> <span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="co1">//throw a specific error and message - this will pass because it &quot;should&quot; happen</span>
        <span class="kw1">throw</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    testObjectError2 <span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="co1">//throw a specific error and message - this will fail because the type doesn't match</span>
        <span class="kw1">throw</span> <span class="kw2">new</span> Error<span class="br0">&#40;</span><span class="st0">&quot;Number expected.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    testObjectError3 <span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="co1">//throw a specific error and message - this will fail because the message doesn't match</span>
        <span class="kw1">throw</span> <span class="kw2">new</span> TypeError<span class="br0">&#40;</span><span class="st0">&quot;String expected.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    ...
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax6-plain">Y.example.test.AdvancedOptionsTestCase = new Y.Test.Case({

    //the name of the test case - if not provided, one is automatically generated
    name: "Advanced Options Tests",

    ...

    testObjectError : function() {

        //throw a specific error and message - this will pass because it "should" happen
        throw new TypeError("Number expected.");
    },

    testObjectError2 : function() {

        //throw a specific error and message - this will fail because the type doesn't match
        throw new Error("Number expected.");
    },

    testObjectError3 : function() {

        //throw a specific error and message - this will fail because the message doesn't match
        throw new TypeError("String expected.");
    },

    ...
});</textarea></div><p>Of the these three methods, only <code>testObjectError()</code> will pass because it's the only one that throws a <code>TypeError</code>
  object with the message, &quot;Number expected.&quot; The <code>testObjectError2()</code> method will fail because the type of error
  being thrown (<code>Error</code>) is different from the expected type (<code>TypeError</code>), as specified in the <code>error</code>
  section. The last method, <code>testObjectError3()</code>, also fails. Though it throws the right type of error, the error message
  doesn't match the one that was specified.</p>
<p>The last method in the <code>Y.Test.Case</code> is <code>testIgnore()</code>, which is specified to be ignored. To be certain, this
  method pops up a message:</p>
<div id="syntax7" 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">AdvancedOptionsTestCase</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">//the name of the test case - if not provided, one is automatically generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    ...</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="me1">testIgnore</span> <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="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;You'll never see this.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</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></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">AdvancedOptionsTestCase</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>
&nbsp;
    <span class="co1">//the name of the test case - if not provided, one is automatically generated</span>
    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;Advanced Options Tests&quot;</span><span class="sy0">,</span>
&nbsp;
    ...
&nbsp;
    <span class="me1">testIgnore</span> <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;You'll never see this.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax7-plain">Y.example.test.AdvancedOptionsTestCase = new Y.Test.Case({

    //the name of the test case - if not provided, one is automatically generated
    name: "Advanced Options Tests",

    ...

    testIgnore : function () {
        alert("You'll never see this.");
    }
});</textarea></div><p>If this test weren't ignored, then the alert should be displayed. Since it is ignored, though, you will never see the alert. Additionally,
  there is a special message displayed in the <code>Y.Console</code> when a test is ignored.</p>

<h3>Running the tests</h3>

<p>With all of the tests defined, the last step is to run them:</p>

<div id="syntax8" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><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="li1"><div class="de1">    newestOnTop <span class="sy0">:</span> <span class="kw2">false</span></div></li><li class="li2"><div class="de2"><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="li1"><div class="de1"><span class="co1">//add the test suite to the runner's queue</span></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">AdvancedOptionsTestCase</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;"><span class="co1">//create the console</span>
<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>
    verbose <span class="sy0">:</span> <span class="kw2">true</span><span class="sy0">,</span>
    newestOnTop <span class="sy0">:</span> <span class="kw2">false</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
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>
&nbsp;
<span class="co1">//add the test suite to the runner's queue</span>
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">AdvancedOptionsTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">//run the tests</span>
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="syntax8-plain">//create the console
var r = new Y.Console({
    verbose : true,
    newestOnTop : false
});

r.render('#testLogger');

//add the test suite to the runner's queue
Y.Test.Runner.add(Y.example.test.AdvancedOptionsTestCase);

//run the tests
Y.Test.Runner.run();</textarea></div>
<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
  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
  <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>,
  this example only adds one for simplicity). The very last step is to call <code>run()</code>, which begins executing the tests in its
  queue and displays the results in the <code>Y.Console</code>.</p>				</div>
				<div class="yui-u sidebar">
					
				
					<div id="examples" class="mod box4">
                        <div class="hd">
						<h4>
    Test Examples:</h4>
                        </div>
						<div class="bd">
							<ul>
								<li><a href='../test/test-simple-example.html'>Simple Testing Example</a></li><li class='selected'><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>
						</div>
					</div>
					
					<div class="mod box4">
                        <div class="hd">
						<h4>More Test Resources:</h4>
                        </div>
                        <div class="bd">
						<ul>
							<!-- <li><a href="http://developer.yahoo.com/yui/test/">User's Guide</a> (external)</li> -->
<li><a href="../../api/module_test.html">API Documentation</a></li></ul>
                        </div>
					</div>
			  </div>
		</div>
		
		</div>
	</div>


<div class="yui-b toc3" id="tocWrapper">
<!-- TABLE OF CONTENTS -->
<div id="toc">
	
<ul>
<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>
</div>
</div>
	</div><!--closes bd-->

	<div id="ft">
        <p class="first">Copyright &copy; 2009 Yahoo! Inc. All rights reserved.</p>
        <p><a href="http://privacy.yahoo.com/privacy/us/devel/index.html">Privacy Policy</a> - 
            <a href="http://docs.yahoo.com/info/terms/">Terms of Service</a> - 
            <a href="http://docs.yahoo.com/info/copyright/copyright.html">Copyright Policy</a> - 
            <a href="http://careers.yahoo.com/">Job Openings</a></p>
	</div>
</div>
<script language="javascript"> 
var yuiConfig = {base:"../../build/", timeout: 10000};
</script>
<script src="../../assets/syntax.js"></script>
<script src="../../assets/dpSyntaxHighlighter.js"></script>
<script language="javascript"> 
dp.SyntaxHighlighter.HighlightAll('code'); 
</script>
</body>
</html>