src/cm/media/js/lib/yui/yui_3.10.3/docs/test/index.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>Test</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
        <a href="#toc" class="jump">Jump to Table of Contents</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
            <h1>Test</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
                <div class="content"><div class="intro">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    <p>YUI Test is a testing framework for browser-based JavaScript solutions. Using YUI Test, you can easily add unit testing to your JavaScript solutions. While not a direct port from any specific xUnit framework, YUI Test does derive some characteristics from <a href="http://www.nunit.org/">nUnit</a> and <a href="http://www.junit.org/">JUnit</a>.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    <p>YUI Test features:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        <li>Rapid creation of <strong>test cases</strong> through simple syntax.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        <li>Advanced <strong>failure detection</strong> for methods that throw errors.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        <li>Grouping of related test cases using <strong>test suites</strong>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        <li><strong>Mock objects</strong> for writing tests without external dependencies.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        <li><strong>Asynchronous tests</strong> for testing events and Ajax communication.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        <li><strong>DOM Event simulation</strong> in all A-grade browsers (through <a href="../event/index.html">Event</a>).</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
<h2 id="getting-started">Getting Started</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
To include the source files for Test and its dependencies, first load
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
the YUI seed file if you haven't already loaded it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
<pre class="code prettyprint">&lt;script src=&quot;http:&#x2F;&#x2F;yui.yahooapis.com&#x2F;3.10.3&#x2F;build&#x2F;yui&#x2F;yui-min.js&quot;&gt;&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
Next, create a new YUI instance for your application and populate it with the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
modules you need by specifying them as arguments to the <code>YUI().use()</code> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
YUI will automatically load any dependencies required by the modules you
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
specify.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
<pre class="code prettyprint">&lt;script&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
&#x2F;&#x2F; Create a new YUI instance and populate it with the required modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
YUI().use(&#x27;test&#x27;, function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    &#x2F;&#x2F; Test is available and ready for use. Add implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    &#x2F;&#x2F; code here.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
For more information on creating YUI instances and on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
<a href="http://yuilibrary.com/yui/docs/api/classes/YUI.html#method_use"><code>use()</code> method</a>, see the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
documentation for the <a href="../yui/index.html">YUI Global Object</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
                <h2 id="testcases">Using Test Cases</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
                <p>The basis of Test is the <code>Y.Test.Case</code> object. A <code>TestCase</code> object is created by using the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
                  <code>Y.Test.Case</code> constructor and passing in an object containing methods and other information with which
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
                  to initialize the test case. Typically, the argument is an object literal, for example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    &#x2F;&#x2F;traditional test names
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    testSomething : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    testSomethingElse : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
        &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
                <p>In this example, a simple test case is created named &quot;TestCase Name&quot;. The <code>name</code> property is automatically  applied to the test case so that it can be distinguished from other test cases that may be run during the same cycle. The two methods in this example are tests methods ( <code>testSomething()</code> and <code>testSomethingElse())</code>, which means  that they are methods designed to test a specific piece of functional code. Test methods are indicatd by their name, either using the traditional manner of prepending the word <code>test</code> to the method name, or using a "friendly name," which is a sentence containing at least one space that describes the test's purpose. For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
    &#x2F;&#x2F;friendly test names
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    &quot;Something should happen here&quot; : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
    &quot;Check something else&quot; : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
                <p>Regardless of the naming convention used for test names, each should contain one or more <a href="#assertions">assertions</a> that test data for validity.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
                <p>Except for methods and properties following these special rules and a few other reserved names described in the following sections, a test case may contain other utility methods or properties, all reachable as instance members via <code>this</code>.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
                <h3 id="setup-and-teardown">setUp() and tearDown()</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
                <p>As each test method is called, it may be necessary to setup information before it's run and then potentially clean up that information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
                  after the test is run. The <code>setUp()</code> method is run before each and every test in the test case and likewise the <code>tearDown()</code> method is run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
                  after each test is run. These methods should be used in conjunction to create objects before a test is run and free up memory after the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
                  test is run. For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
    &#x2F;&#x2F; Setup and tear down
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    setUp : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
        this.data = { name : &quot;Nicholas&quot;, age : 28 };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    tearDown : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        delete this.data;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
    &#x2F;&#x2F; Tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
    testName: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
        Y.Assert.areEqual(&quot;Nicholas&quot;, this.data.name, &quot;Name should be &#x27;Nicholas&#x27;&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    testAge: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        Y.Assert.areEqual(28, this.data.age, &quot;Age should be 28&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
                <p>In this example, a <code>setUp()</code> method creates a data object with some basic information. Each property of the data object is checked with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
                  a different test, <code>testName()</code> tests the value of <code>data.name</code> while <code>testAge()</code> tests the value of <code>data.age</code>. Afterwards, the data object is deleted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
                  to free up the memory. Real-world implementations will have more complex tests, of course, but they should follow the basic pattern you see in the above code.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
                <p><strong>Note: </strong>Both <code>setUp()</code> and <code>tearDown()</code> are optional methods and are only used when defined.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
                <h3 id="ignoring">Ignoring Tests</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
                <p>There may be times when you want to ignore a test (perhaps the test is invalid for your purposes or the functionality is being re-engineered and so it shouldn't be tested at this time). To specify tests to ignore,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
                  use the <code>_should.ignore</code> property and name each test to skip as a property whose value is set to <code>true</code>:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
    &#x2F;&#x2F; Special instructions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
    _should: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        ignore: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
            testName: true &#x2F;&#x2F;ignore this test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
    &#x2F;&#x2F; Setup and tear down
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
    setUp : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
        this.data = { name : &quot;Nicholas&quot;, age : 28 };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    tearDown : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        delete this.data;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
    &#x2F;&#x2F; Tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
    testName: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        Y.Assert.areEqual(&quot;Nicholas&quot;, this.data.name, &quot;Name should be &#x27;Nicholas&#x27;&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
    testAge: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        Y.Assert.areEqual(28, this.data.age, &quot;Age should be 28&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
                <p>Here the <code>testName()</code> method will be ignored when the test case is run. This is accomplished by first defining the special <code>_should</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
                  property and within it, an <code>ignore</code> property. The ignore property is an object containing name-value pairs representing the names of the tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
                  to ignore. By defining a property named &quot;testName&quot; and setting its value to <code>true</code>, it says that the method named &quot;testName&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
                  should not be executed.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
                <h3 id="intentional-errors">Intentional Errors</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
                <p>There may be a time that a test throws an error that was expected. For instance, perhaps you're testing a function that should throw an error if invalid data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
                  is passed in. A thrown error in this case can signify that the test has passed. To indicate that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
                  a test should throw an error, use the <code>_should.error</code> property.  For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
<pre class="code prettyprint">function sortArray(array) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    if (array instanceof Array){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        array.sort();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
        throw new TypeError(&quot;Expected an array&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    &#x2F;&#x2F; Special instructions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    _should: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        error: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            testSortArray: true &#x2F;&#x2F;this test should throw an error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    &#x2F;&#x2F; Tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    testSortArray: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
        sortArray(12);  &#x2F;&#x2F;this should throw an error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
                <p>In this example, a test case is created to test the standalone <code>sortArray()</code> function, which simply accepts an array and calls its <code>sort()</code> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
                  But if the argument is not an array, an error is thrown. When <code>testSortArray()</code> is called, it throws an error because a number is passed into <code>sortArray()</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
                  Since the <code>_should.error</code> object has a property called &quot;testSortArray&quot; set to <code>true</code>, this indicates that <code>testSortArray()</code> should
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
                  pass only if an error is thrown.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
                <p>It is possible to be more specific about the error that should be thrown. By setting a property in <code>_should.error</code> to a string, you can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
                  specify that only a specific error message can be construed as a passed test.  Here's an example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
<pre class="code prettyprint">function sortArray(array) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
    if (array instanceof Array){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        array.sort();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        throw new TypeError(&quot;Expected an array&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
    &#x2F;&#x2F; Special instructions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    _should: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        error: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            testSortArray: &quot;Expected an array&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
    &#x2F;&#x2F; Tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
    testSortArray: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
        sortArray(12);  &#x2F;&#x2F;this should throw an error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
                <p>In this example, the <code>testSortArray()</code> test will only pass if the error that is thrown has a message of &quot;Expected an array&quot;.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
                  If a different error occurs within the course of executing <code>testSortArray()</code>, then the test will fail due to an unexpected error.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
                <p>If you're unsure of the message but know the type of error that will be thrown, you can specify the error constructor for the error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
                you're expecting to occur:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
<pre class="code prettyprint">function sortArray(array) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
    if (array instanceof Array){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
        array.sort();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
        throw new TypeError(&quot;Expected an array&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
    &#x2F;&#x2F; Special instructions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
    _should: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
        error: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
            testSortArray: TypeError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    &#x2F;&#x2F; Tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
    testSortArray: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        sortArray(12);  &#x2F;&#x2F;this should throw an error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
                <p>In this example, the test will pass if a <code>TypeError</code> gets thrown; if any other type of error is thrown,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
                the test will fail. A word of caution: <code>TypeError</code> is the most frequently thrown error by browsers,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
                so specifying a <code>TypeError</code> as expected may give false passes.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
                <p>To narrow the margin of error between checking for an error message and checking the error type, you can create a specific error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                  object and set that in the <code>_should.error</code> property, such as:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
<pre class="code prettyprint">function sortArray(array) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
    if (array instanceof Array){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
        array.sort();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
        throw new TypeError(&quot;Expected an array&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
    &#x2F;&#x2F; Special instructions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
    _should: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
        error: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
            testSortArray: new TypeError(&quot;Expected an array&quot;)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    &#x2F;&#x2F; Tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
    testSortArray: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
        sortArray(12);  &#x2F;&#x2F;this should throw an error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
                <p>Using this code, the <code>testSortArray()</code> method will only pass if a <code>TypeError</code> object is thrown with a message of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
                  &quot;Expected an array&quot;; if any other type of error occurs, then the test fails due to an unexpected error.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
                <p><strong>Note: </strong>If a test is marked as expecting an error, the test will fail unless that specific error is thrown. If the test completes without an error being thrown, then it fails.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
                <h2 id="assertions">Assertions</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
                <p>Test methods use assertions to check the validity of a particular action or function. An assertion method tests (asserts) that a condition is valid; if not, it throws an error that causes the test to fail. If all assertions pass within a test method, it is said that the test has passed. The simplest assertion is <code>Y.assert()</code>, which takes two arguments: a condition to test and a message. If the condition is <em>not</em> true, then an assertion error is thrown with the specified message. For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    testUsingAsserts : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
        Y.assert(value == 5, &quot;The value should be five.&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
        Y.assert(flag, &quot;Flag should be true.&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
                <p>In this example, <code>testUsingAsserts()</code> will fail if <code>value</code> is not equal to 5 of <code>flag</code> is not set to <code>true</code>. The <code>Y.assert()</code> method may be all that you need, but there are advanced options available. The <code>Y.Assert</code> object contains several assertion methods that can be used to validate data.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
                <h3 id="equality">Equality Assertions</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
                <p>The simplest assertions are <code>areEqual()</code> and <code>areNotEqual()</code>. Both methods accept three arguments: the expected value,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
                  the actual value, and an optional failure message (a default one is generated if this argument is omitted). For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
    testEqualityAsserts : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
        Y.Assert.areEqual(5, 5);     &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
        Y.Assert.areEqual(5, &quot;5&quot;);     &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
        Y.Assert.areNotEqual(5, 6);  &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        Y.Assert.areEqual(5, 6, &quot;Five was expected.&quot;); &#x2F;&#x2F;fails
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
                <p>These methods use the double equals (<code>==</code>) operator to determine if two values are equal, so type coercion may occur. This means
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
                  that the string <code>"5"</code> and the number <code>5</code> are considered equal because the double equals sign converts the number to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
                  a string before doing the comparison. If you don't want values to be converted for comparison purposes, use the sameness assertions instead.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
                <h3 id="sameness">Sameness Assertions</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
                <p>The sameness assertions are <code>areSame()</code> and <code>areNotSame()</code>, and these accept the same three arguments as the equality
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
                  assertions: the expected value, the actual value, and an optional failure message. Unlike the equality assertions, these methods use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
                  the triple equals operator (<code>===</code>) for comparisions, assuring that no type coercion will occur. For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    testSamenessAsserts : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
        Y.Assert.areSame(5, 5);      &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
        Y.Assert.areSame(5, &quot;5&quot;);    &#x2F;&#x2F;fails
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
        Y.Assert.areNotSame(5, 6);   &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
        Y.Assert.areNotSame(5, &quot;5&quot;); &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
        Y.Assert.areSame(5, 6, &quot;Five was expected.&quot;); &#x2F;&#x2F;fails
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
                <p><strong>Note: </strong>Even though this example shows multiple assertions failing, a test will stop as soon as one
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
                  assertion fails, causing all others to be skipped.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
                <h3 id="datatypes">Data Type Assertions</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
                <p>There may be times when some data should be of a particular type. To aid in this case, there are several methods that test the data type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
                  of variables. Each of these methods acce<prepts two arguments: the data to test and an optional failure message. The data type assertions are as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
                  follows:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                    <li><code>isArray()</code> - passes only if the value is an instance of <code>Array</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
                    <li><code>isBoolean()</code> - passes only if the value is a Boolean.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                    <li><code>isFunction()</code> - passes only if the value is a function.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                    <li><code>isNumber()</code> - passes only if the value is a number.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                    <li><code>isObject()</code> - passes only if the value is an object or a function.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                    <li><code>isString()</code> - passes only if the value is a string.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                <p>These are used as in the following example: </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
    testDataTypeAsserts : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
        Y.Assert.isString(&quot;Hello world&quot;);     &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
        Y.Assert.isNumber(1);                 &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
        Y.Assert.isArray([]);                 &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
        Y.Assert.isObject([]);                &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
        Y.Assert.isFunction(function(){});    &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
        Y.Assert.isBoolean(true);             &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
        Y.Assert.isObject(function(){});      &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
        Y.Assert.isNumber(&quot;1&quot;, &quot;Value should be a number.&quot;);  &#x2F;&#x2F;fails
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
        Y.Assert.isString(1, &quot;Value should be a string.&quot;);    &#x2F;&#x2F;fails
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
                <p>In addition to these specific data type assertions, there are two generic data type assertions.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
                <p>The <code>isTypeOf()</code> method tests the string returned when the <code>typeof</code> operator is applied to a value. This
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
                  method accepts three arguments: the type that the value should be (&quot;string&quot;, &quot;number&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
                  &quot;boolean&quot;, &quot;undefined&quot;, &quot;object&quot;, or &quot;function&quot;), the value to test,  and an optional failure message.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
                  For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
    testTypeOf : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        Y.Assert.isTypeOf(&quot;string&quot;, &quot;Hello world&quot;);   &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
        Y.Assert.isTypeOf(&quot;number&quot;, 1);               &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
        Y.Assert.isTypeOf(&quot;boolean&quot;, true);           &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
        Y.Assert.isTypeOf(&quot;number&quot;, 1.5);             &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
        Y.Assert.isTypeOf(&quot;function&quot;, function(){});  &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
        Y.Assert.isTypeOf(&quot;object&quot;, {});              &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        Y.Assert.isTypeOf(&quot;undefined&quot;, this.blah);    &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
        Y.Assert.isTypeOf(&quot;number&quot;, &quot;Hello world&quot;, &quot;Value should be a number.&quot;); &#x2F;&#x2F;fails
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
                <p>If you need to test object types instead of simple data types, you can also use the <code>isInstanceOf()</code> assertion, which accepts three
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
                  arguments: the constructor function to test for, the value to test, and an optional failure message. This assertion uses the <code>instanceof</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
                  operator to determine if it should pass or fail. Example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
    testInstanceOf : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        Y.Assert.isInstanceOf(Object, {});    &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
        Y.Assert.isInstanceOf(Array, []);     &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        Y.Assert.isInstanceOf(Object, []);     &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
        Y.Assert.isInstanceOf(Function, function(){});  &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
        Y.Assert.isInstanceOf(Object, function(){});  &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
        Y.Assert.isTypeOf(Array, {}, &quot;Value should be an array.&quot;); &#x2F;&#x2F;fails
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
                <h3 id="specialvalues">Special Value Assertions</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
                <p>There are numerous special values in JavaScript that may occur in code. These include <code>true</code>, <code>false</code>, <code>NaN</code>,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
                  <code>null</code>, and <code>undefined</code>. There are a number of assertions designed to test for these values specifically:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
                  <li><code>isFalse()</code> - passes if the value is <code>false</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
                  <li><code>isTrue()</code> - passes if the value is <code>true</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
                  <li><code>isNaN()</code> - passes if the value is <code>NaN</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
                  <li><code>isNotNaN()</code> - passes if the value is not <code>NaN</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
                  <li><code>isNull()</code> - passes if the value is <code>null</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                  <li><code>isNotNull()</code> - passes if the value is not <code>null</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
                  <li><code>isUndefined()</code> - passes if the value is <code>undefined</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
                  <li><code>isNotUndefined()</code> - passes if the value is not <code>undefined</code>.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                <p>Each of these methods accepts two arguments: the value to test and an optional failure message. All of the assertions expect the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                  exact value (no type coercion occurs), so for example calling <code>isFalse(0)</code> will fail.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
    testSpecialValues : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
        Y.Assert.isFalse(false);      &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
        Y.Assert.isTrue(true);        &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
        Y.Assert.isNaN(NaN);          &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
        Y.Assert.isNaN(5 &#x2F; &quot;5&quot;);      &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
        Y.Assert.isNotNaN(5);         &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
        Y.Assert.isNull(null);        &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
        Y.Assert.isNotNull(undefined);    &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
        Y.Assert.isUndefined(undefined);  &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
        Y.Assert.isNotUndefined(null);    &#x2F;&#x2F;passes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
        Y.Assert.isUndefined({}, &quot;Value should be undefined.&quot;); &#x2F;&#x2F;fails
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
                <h3 id="forcedfailures">Forced Failures</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
                <p>While most tests fail as a result of an assertion, there may be times when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
                  you want to force a test to fail or create your own assertion method. To do this, use the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
                  <code>fail()</code> method to force a test method to fail immediately:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
    testForceFail : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
        Y.Assert.fail();  &#x2F;&#x2F;causes the test to fail
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
                <p>In this case, the <code>testForceFail()</code> method does nothing but force
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
                  the method to fail. Optionally, you can pass in a message to <code>fail()</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
                  which will be displayed as the failure message:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
    testForceFail : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
        Y.Assert.fail(&quot;I decided this should fail.&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                <p>When the failure of this method is reported, the message &quot;I decided this should fail.&quot; will be reported.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
                <h2 id="mockobjects">Mock Objects</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
                <p>Mock objects are used to eliminate test dependencies on other objects. In complex software systems, there's often multiple
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                object that have dependence on one another to do their job. Perhaps part of your code relies on the <code>XMLHttpRequest</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
                object to get more information; if you're running the test without a network connection, you can't really be sure if the test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
                is failing because of your error or because the network connection is down. In reality, you just want to be sure that the correct
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                data was passed to the <code>open()</code> and <code>send()</code> methods because you can assume that, after that point,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                the <code>XMLHttpRequest</code> object works as expected. This is the perfect case for using a mock object.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
                <p>To create a mock object, use the <code>Y.Mock()</code> method to create a new object and then use <code>Y.Mock.expect()</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
                to define expectations for that object. Expectations define which methods you're expecting to call, what the arguments should be,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
                and what the expected result is. When you believe all of the appropriate methods have been called, you call <code>Y.Mock.verify()</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
                on the mock object to check that everything happened as it should. For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
<pre class="code prettyprint">&#x2F;&#x2F;code being tested
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
function logToServer(message, xhr){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
    xhr.open(&quot;get&quot;, &quot;&#x2F;log.php?msg=&quot; + encodeURIComponent(message), true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
    xhr.send(null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
&#x2F;&#x2F;test case for testing the above function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
    name: &quot;logToServer Tests&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
    testPassingDataToXhr : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
        var mockXhr = Y.Mock();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
        &#x2F;&#x2F;I expect the open() method to be called with the given arguments
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
        Y.Mock.expect(mockXhr, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
            method: &quot;open&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
            args: [&quot;get&quot;, &quot;&#x2F;log.php?msg=hi&quot;, true]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
        &#x2F;&#x2F;I expect the send() method to be called with the given arguments
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
        Y.Mock.expect(mockXhr, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
            method: &quot;send&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
            args: [null]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
        &#x2F;&#x2F;now call the function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
        logToServer(&quot;hi&quot;, mockXhr);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
        &#x2F;&#x2F;verify the expectations were met
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
        Y.Mock.verify(mockXhr);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
                <p>In this code, a mock <code>XMLHttpRequest</code> object is created to aid in testing. The mock object defines two
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
                expectations: that the <code>open()</code> method will be called with a given set of arguments and that the <code>send()</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
                method will be called with a given set of arguments. This is done by using <code>Y.Mock.expect()</code> and passing in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
                mock object as well as some information about the expectation. The <code>method</code> property indicates the method name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
                that will be called and the <code>args</code> property is an array of arguments that should be passed into the method. Each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
                argument is compared against the actual arguments using the identically equal (<code>===</code>) operator, and if any of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
                arguments doesn't match, an assertion failure is thrown when the method is called (it &quot;fails fast&quot; to allow easier debugging).</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
                <p>The call to <code>Y.Mock.verify()</code> is the final step in making sure that all expectations have been met. It's at this stage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
                that the mock object checks to see that all methods have been called. If <code>open()</code> was called but <code>send()</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
                was not, then an assertion failure is thrown and the test fails. It's very important to call <code>Y.Mock.verify()</code> to test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
                all expectations; failing to do so can lead to false passes when the test should actually fail.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
                <p>In order to use mock objects, your code must be able to swap in and out objects that it uses. For example, a hardcoded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
                reference to <code>XMLHttpRequest</code> in your code would prevent you from using a mock object in its place. It's sometimes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
                necessary to refactor code in such a way that referenced objects are passed in rather than hardcoded so that mock objects
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
                can be used.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
                <p>Note that you can use assertions and mock objects together; either will correctly indicate a test failure.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
                <h3 id="special-argument-values">Special Argument Values</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
                <p>There may be times when you don't necessarily care about a specific argument's value. Since you must always specify the correct
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
                number of arguments being passed in, you still need to indicate that an argument is expected. There are several special values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
                you can use as placeholders for real values. These values do a minimum amount of data validation:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
                    <li><code>Y.Mock.Value.Any</code> - any value is valid regardless of type.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
                    <li><code>Y.Mock.Value.String</code> - any string value is valid.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
                    <li><code>Y.Mock.Value.Number</code> - any number value is valid.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
                    <li><code>Y.Mock.Value.Boolean</code> - any Boolean value is valid.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
                    <li><code>Y.Mock.Value.Object</code> - any non-<code>null</code> object value is valid.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
                    <li><code>Y.Mock.Value.Function</code> - any function value is valid.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
                <p>Each of these special values can be used in the <code>args</code> property of an expectation, such as:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
<pre class="code prettyprint">Y.Mock.expect(mockXhr, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
    method: &quot;open&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
    args: [Y.Mock.Value.String, &quot;&#x2F;log.php?msg=hi&quot;, Y.Mock.Value.Boolean]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
                <p>The expecation here will allow any string value as the first argument and any Boolean value as the last argument.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
                These special values should be used with care as they can let invalid values through if they are too general. The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
                <code>Y.Mock.Value.Any</code> special value should be used only if you're absolutely sure that the argument doesn't
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
                matter.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
                <h3 id="property-expectations">Property Expectations</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
                <p>Since it's not possible to create property getters and setters in all browsers, creating a true cross-browser property
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
                expectation isn't feasible. YUI Test mock objects allow you to specify a property name and it's expected value when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
                <code>Y.Mock.verify()</code> is called. This isn't a true property expectation but rather an expectation that the property
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
                will have a certain value at the end of the test. You can specify a property expectation like this:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
<pre class="code prettyprint">&#x2F;&#x2F;expect that the status property will be set to 404
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
Y.Mock.expect(mockXhr, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
    property: &quot;status&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
    value: 404
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
                <p>This example indicates that the <code>status</code> property of the mock object should be set to 404 before
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
                the test is completed. When <code>Y.Mock.verify()</code> is called on <code>mockXhr</code>, it will check
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
                the property and throw an assertion failure if it has not been set appropriately.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
                <h2 id="asynctests">Asynchronous Tests</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
                <p>YUI Test allows you to pause a currently running test and resume either after a set amount of time or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
                  at another designated time. The <code>TestCase</code> object has a method called <code>wait()</code>. When <code>wait()</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
                  is called, the test immediately exits (meaning that any code after that point will be ignored) and waits for a signal to resume
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
                  the test.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
                <p>A test may be resumed after a certain amount of time by passing in two arguments to <code>wait()</code>: a function to execute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
                  and the number of milliseconds to wait before executing the function (similar to using <code>setTimeout()</code>). The function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
                  passed in as the first argument will be executed as part of the current test (in the same scope) after the specified amount of time.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
                  For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
    &#x2F;&#x2F; Setup and tear down
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
    setUp : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
        this.data = { name : &quot;Nicholas&quot;, age : 29 };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
    tearDown : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
        delete this.data;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
    &#x2F;&#x2F; Tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
    testAsync: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
        Y.Assert.areEqual(&quot;Nicholas&quot;, this.data.name, &quot;Name should be &#x27;Nicholas&#x27;&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
        &#x2F;&#x2F;wait 1000 milliseconds and then run this function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
        this.wait(function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
            Y.Assert.areEqual(29, this.data.age, &quot;Age should be 29&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
        }, 1000);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
                <p>In this code, the <code>testAsync()</code> function does one assertion, then waits 1000 milliseconds before performing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
                  another assertion. The function passed into <code>wait()</code> is still in the scope of the original test, so it has
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
                  access to <code>this.data</code> just as the original part of the test does. Timed waits are helpful in situations when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
                  there are no events to indicate when the test should resume.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
                <p>If you want a test to wait until a specific event occurs before resuming, the <code>wait()</code> method can be called
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
                  with a timeout argument (the number of milliseconds to wait before considering the test a failure). At that point, testing will resume only when the <code>resume()</code> method is called. The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
                  <code>resume()</code> method accepts a single argument, which is a function to run when the test resumes. This function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
                  should specify additional assertions. If <code>resume()</code> isn't called before the timeout expires, then the test fails. The following tests to see if the <code>Anim</code> object has performed its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
                  animation completely:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
<pre class="code prettyprint">var testCase = new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
    name: &quot;TestCase Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
    &#x2F;&#x2F; Tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
    &#x2F;&#x2F;---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
    testAnimation : function (){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
        &#x2F;&#x2F;animate width to 400px
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
        var myAnim = new Y.Anim({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
            node: &#x27;#testDiv&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
            to: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
                width: 400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
            duration: 3
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
        var test = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
        &#x2F;&#x2F;assign oncomplete handler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
        myAnim.on(&quot;end&quot;, function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
            &#x2F;&#x2F;tell the TestRunner to resume
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
            test.resume(function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
                Y.Assert.areEqual(myAnim.get(&quot;node&quot;).get(&quot;offsetWidth&quot;), 400, &quot;Width of the DIV should be 400.&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
        &#x2F;&#x2F;start the animation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
        myAnim.run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
        &#x2F;&#x2F;wait until something happens
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
        this.wait(3100);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
                <p>In this example, an <code>Anim</code> object is used to animate the width of an element to 400 pixels. When the animation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
                  is complete, the <code>end</code> event is fired, so that is where the <code>resume()</code> method is called. The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
                  function passed into <code>resume()</code> simply tests that the final width of the element is indeed 400 pixels. Once the event handler is set up, the animation begins.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
                  In order to allow enough time for the animation to complete, the <code>wait()</code> method is called
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
                  with a timeout of 3.1 seconds (just longer than the 3 seconds needed to complete the animation). At that point, testing stops until the animation completes and <code>resume()</code> is called or until 3100 milliseconds have passed.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
                <h2 id="testsuites">Test Suites</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
                <p>For large web applications, you'll probably have many test cases that should be run during a testing phase. A test suite helps to handle multiple test cases
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
                  by grouping them together into functional units that can be run together. To create new test suite, use the <code>Y.Test.Suite</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
                  constructor and pass in the name of the test suite. The name you pass in is for logging purposes and allows you to discern which <code>TestSuite</code> instance currently running. For example: </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
<pre class="code prettyprint">&#x2F;&#x2F;create the test suite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
var suite = new Y.Test.Suite(&quot;TestSuite Name&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
&#x2F;&#x2F;add test cases
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
suite.add(new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
    &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
}));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
suite.add(new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
    &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
}));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
suite.add(new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
    &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
}));</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
                <p>Here, a test suite is created and three test cases are added to it using the <code>add()</code> method. The test suite now contains all of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
                  information to run a series of tests.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
                <p>It's also possible to add other multiple <code>TestSuite</code> instances together under a parent <code>TestSuite</code> using the same <code>add()</code> method:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
<pre class="code prettyprint">&#x2F;&#x2F;create a test suite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
var suite = new Y.Test.Suite(&quot;TestSuite Name&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
&#x2F;&#x2F;add a test case
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
suite.add(new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
    &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
&#x2F;&#x2F;create another suite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
var anotherSuite = new Y.Test.Suite(&quot;test_suite_name&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
&#x2F;&#x2F;add a test case
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
anotherSuite.add(new Y.Test.Case({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
    &#x2F;&#x2F;...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
&#x2F;&#x2F;add the second suite to the first
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
suite.add(anotherSuite);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
                <p>By grouping test suites together under a parent test suite you can more effectively manage testing of particular aspects of an application.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
                <p>Test suites may also have <code>setUp()</code> and <code>tearDown()</code> methods. A test suite's <code>setUp()</code> method is called before
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
                  the first test in the first test case is executed (prior to the test case's <code>setUp()</code> method); a test suite's <code>tearDown()</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
                  method executes after all tests in all test cases/suites have been executed (after the last test case's <code>tearDown()</code> method). To specify
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
                  these methods, pass an object literal into the <code>Y.Test.Suite</code> constructor:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
<pre class="code prettyprint">&#x2F;&#x2F;create a test suite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
var suite = new Y.Test.Suite({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
    name : &quot;TestSuite Name&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
    setUp : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
        &#x2F;&#x2F;test-suite-level setup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
    tearDown: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
        &#x2F;&#x2F;test-suite-level teardown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
                <p>Test suite <code>setUp()</code> and <code>tearDown()</code> may be helpful in setting up global objects that are necessary for a multitude of tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
                  and test cases.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
                <h2 id="running-tests">Running Tests</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
                <p>In order to run test cases and test suites, use the <code>Y.Test.Runner</code> object. This object is a singleton that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
                  simply runs all of the tests in test cases and suites, reporting back on passes and failures. To determine which test cases/suites
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
                  will be run, add them to the <code>Y.Test.Runner</code> using the <code>add()</code> method. Then, to run the tests, call the <code>run()</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
                  method:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
<pre class="code prettyprint">&#x2F;&#x2F;add the test cases and suites
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
Y.Test.Runner.add(testCase);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
Y.Test.Runner.add(oTestSuite);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
&#x2F;&#x2F;run all tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
Y.Test.Runner.run();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
                <p>If at some point you decide not to run the tests that have already been added to the <code>TestRunner</code>, they can be removed by calling <code>clear()</code>:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
<pre class="code prettyprint">Y.Test.Runner.clear();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
                <p>Making this call removes all test cases and test suites that were added using the <code>add()</code> method.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
                <h3 id="testrunner-events">TestRunner Events</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
                <p>The <code>Y.Test.Runner</code> provides results and information about the process by publishing several events. These events can occur at four
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
                  different points of interest: at the test level, at the test case level, at the test suite level, and at the <code>Y.Test.Runner</code> level.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
                  The data available for each event depends completely on the type of event and the level at which the event occurs.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
                <h3 id="test-level-events">Test-Level Events</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
                <p>Test-level events occur during the execution of specific test methods. There are three test-level events:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
                    <li><code>Y.Test.Runner.TEST_PASS_EVENT</code> - occurs when the test passes.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
                    <li><code>Y.Test.Runner.TEST_FAIL_EVENT</code> - occurs when the test fails.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
                    <li><code>Y.Test.Runner.TEST_IGNORE_EVENT</code> - occurs when a test is ignored.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
                <p>For each of these events, the event data object has three properties:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
                    <li><code>type</code> - indicates the type of event that occurred.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
                    <li><code>testCase</code> - the test case that is currently being run.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
                    <li><code>testName</code> - the name of the test that was just executed or ignored.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
                <p>For <code>Y.Test.Runner.TEST_FAIL_EVENT</code>, an <code>error</code> property containing the error object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
                  that caused the test to fail.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
                <h3 id="testcase-level-events">TestCase-Level Events</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
                <p>There are two events that occur at the test case level:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
                    <li><code>Y.Test.Runner.TEST_CASE_BEGIN_EVENT</code> - occurs when the test case is next to be executed but before the first test is run.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
                    <li><code>Y.Test.Runner.TEST_CASE_COMPLETE_EVENT</code> - occurs when all tests in the test case have been executed or ignored.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
                <p>For these two events, the event data object has three properties:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
                    <li><code>type</code> - indicates the type of event that occurred.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
                    <li><code>testCase</code> - the test case that is currently being run.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
                <p>For <code>TEST_CASE_COMPLETE_EVENT</code>, an additional property called <code>results</code> is included. The <code>results</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
                  property is an object containing the aggregated results for all tests in the test case (it does not include information about tests that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
                  were ignored). Each test that was run has an entry in the <code>result</code> object where the property name is the name of the test method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
                  and the value is an object with two properties: <code>result</code>, which is either "pass" or "fail", and <code>message</code>, which is a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
                  text description of the result (simply "Test passed" when a test passed or the error message when a test fails). Additionally, the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
                  <code>failed</code> property indicates the number of tests that failed in the test case, the <code>passed</code> property indicates the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
                  number of tests that passed, and the <code>total</code> property indicates the total number of tests executed. A typical <code>results</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
                  object looks like this:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
<pre class="code prettyprint">{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
    failed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
    passed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
    ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
    total: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
    type: &quot;testcase&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
    name: &quot;Test Case 0&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
    test0: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
        result: &quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
        message: &quot;Test passed&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
        type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
        name: &quot;test0&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
    test1: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
        result: &quot;fail&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
        message: &quot;Assertion failed&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
        type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
        name: &quot;test1&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
                <p>The <code>TEST_CASE_COMPLETE_EVENT</code> provides this information for transparency into the testing process.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
                <h3 id="testsuite-level-events">TestSuite-Level Events</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
                <p>There are two events that occur at the test suite level:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
                    <li><code>Y.Test.Runner.TEST_SUITE_BEGIN_EVENT</code> - occurs when the test suite is next to be executed but before the first test is run.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
                    <li><code>Y.Test.Runner.TEST_SUITE_COMPLETE_EVENT</code> - occurs when all tests in all test cases in the test suite have been executed or ignored.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
                <p>For these two events, the event data object has three properties:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
                    <li><code>type</code> - indicates the type of event that occurred.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
                    <li><code>testSuite</code> - the test suite that is currently being run.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
                <p>The <code>TEST_SUITE_COMPLETE_EVENT</code> also has a <code>results</code> property, which contains aggregated results for all of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
                  test cases (and other test suites) it contains. Each test case and test suite contained within the main suite has an entry in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
                  <code>results</code> object, forming a hierarchical structure of data. A typical <code>results</code> object may look like this:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
<pre class="code prettyprint">{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
    failed: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
    passed: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
    ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
    total: 4,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
    type: &quot;testsuite&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
    name: &quot;Test Suite 0&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
    testCase0: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
        failed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
        passed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
        ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
        total: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
        type: &quot;testcase&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
        name: &quot;testCase0&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
        test0: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
            result: &quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
            message: &quot;Test passed.&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
            type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
            name: &quot;test0&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
        test1: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
            result: &quot;fail&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
            message: &quot;Assertion failed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
            type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
            name: &quot;test1&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
    testCase1: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
        failed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
        passed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
        ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
        total: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
        type: &quot;testcase&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
        name: &quot;testCase1&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
        test0: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
            result: &quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
            message: &quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
            type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
            name: &quot;test0&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
        test1: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
            result: &quot;fail&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
            message: &quot;Assertion failed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
            type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
            name: &quot;test1&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
                <p>This example shows the results for a test suite with two test cases, but there may be test suites contained within test suites. In that case,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
                  the hierarchy is built out accordingly, for example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
<pre class="code prettyprint">{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
    failed: 3,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
    passed: 3,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
    ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
    total: 6,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
    type: &quot;testsuite&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
    name: &quot;Test Suite 0&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
    testCase0: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
        failed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
        passed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
        ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
        total: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
        type: &quot;testcase&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
        name: &quot;testCase0&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
        test0: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
            result: &quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
            message: &quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
            type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
            name: &quot;test0&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
        test1: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
            result: &quot;fail&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
            message: &quot;Assertion failed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
            type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
            name: &quot;test1&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
    testCase1: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
        failed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
        passed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
        ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
        total: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
        type: &quot;testcase&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
        name: &quot;testCase1&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
        test0: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
            result: &quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
            message: &quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
            type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
            name: &quot;test0&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
        test1: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
            result: &quot;fail&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
            message: &quot;Assertion failed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
            type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
            name: &quot;test1&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
    testSuite0:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
        failed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
        passed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
        ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
        total: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
        type: &quot;testsuite&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
        name: &quot;testSuite0&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
        testCase2: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
            failed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
            passed: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
            ignored: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
            total: 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
            type: &quot;testcase&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
            name: &quot;testCase2&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
            test0: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
                result: &quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
                message: &quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
                type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
                name: &quot;test0&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
            test1: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
                result: &quot;fail&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
                message: &quot;Assertion failed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
                type: &quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
                name: &quot;test1&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
                <p>In this code, the test suite contained another test suite named &quot;testSuite0&quot;, which is included in the results along
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
                  with its test cases. At each level, the results are aggregated so that you can tell how many tests passed or failed within each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
                  test case or test suite.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
                <h3 id="testrunner-level-events">TestRunner-Level Events</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
                <p>There are two events that occur at the <code>Y.Test.Runner</code> level:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
                    <li><code>Y.Test.Runner.BEGIN_EVENT</code> - occurs when testing is about to begin but before any tests are run.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
                    <li><code>Y.Test.Runner.COMPLETE_EVENT</code> - occurs when all tests in all test cases and test suites have been executed or ignored.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
                <p>The data object for these events contain a <code>type</code> property, indicating the type of event that occurred. <code>COMPLETE_EVENT</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
                  also includes a <code>results</code> property that is formatted the same as the data returned from <code>TEST_SUITE_COMPLETE_EVENT</code> and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
                  contains rollup information for all test cases and tests suites that were added to the <code>TestRunner</code>.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
                <h3 id="subscribing-to-events">Subscribing to Events</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
                <p>You can subscribe to particular events by calling the <code>subscribe()</code> method. Your event handler code
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
                  should expect a single object to be passed in as an argument. This object provides information about the event that just occured. Minimally,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
                  the object has a <code>type</code> property that tells you which type of event occurred. Example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
<pre class="code prettyprint">function handleTestFail(data){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
    alert(&quot;Test named &#x27;&quot; + data.testName + &quot;&#x27; failed with message: &#x27;&quot; + data.error.message + &quot;&#x27;.&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
var TestRunner = Y.Test.Runner;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
TestRunner.subscribe(TestRunner.TEST_FAIL_EVENT, handleTestFail);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
TestRunner.run();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
                <p>In this code, the <code>handleTestFail()</code> function is assigned as an event handler for <code>TEST_FAIL_EVENT</code>. You can also
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
                  use a single event handler to subscribe to any number of events, using the event data object's <code>type</code> property to determine
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
                  what to do:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
<pre class="code prettyprint">function handleTestResult(data){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
    var TestRunner = Y.Test.Runner;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
    switch(data.type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
        case TestRunner.TEST_FAIL_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
            alert(&quot;Test named &#x27;&quot; + data.testName + &quot;&#x27; failed with message: &#x27;&quot; + data.error.message + &quot;&#x27;.&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
        case TestRunner.TEST_PASS_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
            alert(&quot;Test named &#x27;&quot; + data.testName + &quot;&#x27; passed.&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
        case TestRunner.TEST_IGNORE_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
            alert(&quot;Test named &#x27;&quot; + data.testName + &quot;&#x27; was ignored.&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
TestRunner.subscribe(TestRunner.TEST_FAIL_EVENT, handleTestResult);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
TestRunner.subscribe(TestRunner.TEST_IGNORE_EVENT, handleTestResult);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
TestRunner.subscribe(TestRunner.TEST_PASS_EVENT, handleTestResult);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
TestRunner.run();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
                <h2 id="viewing-results">Viewing Results</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
                <p>There are two ways to view test results. The first is to output test results to the TestConsole
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
                component. To do so, you need only create a new <code>Test.Console</code> instance; the result results will be posted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
                to the logger automatically:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
<pre class="code prettyprint">YUI({ logInclude: { TestRunner: true } }).use(&#x27;test-console&#x27;, &quot;test&quot;, function(Y){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
    &#x2F;&#x2F;tests go here
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
    &#x2F;&#x2F;initialize the console
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
    (new Y.Test.Console({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
        newestOnTop: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
    })).render(&#x27;#log&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
    &#x2F;&#x2F;run the tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
    Y.Test.Runner.run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
                <p>If you are using a browser that supports the <code>console</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
                object (Firefox with Firebug installed, Safari 3+, Internet Explorer 8+, Chrome), then you can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
                direct the test results onto the console. To do so, make sure that you've specified your <code>YUI</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
                instance to use the console when logging:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
<pre class="code prettyprint">YUI({ useBrowserConsole: true }).use(&quot;test&quot;, function(Y){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
    &#x2F;&#x2F;tests go here
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
    Y.Test.Runner.run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
                <p>You can also extract the test result data using the <code>Y.Test.Runner.getResults()</code> method. By default, this method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
                returns an object representing the results of the tests that were just run (the method returns <code>null</code> if called
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
                while tests are still running). You can optionally specify a format in which the results should be returned. There are four
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
                possible formats:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
                    <li><code>Y.Test.Format.XML</code> - YUI Test XML (default)</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
                    <li><code>Y.Test.Format.JSON</code> - JSON</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
                    <li><code>Y.Test.Format.JUnitXML</code> - JUnit XML</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
                    <li><code>Y.Test.Format.TAP</code> - <a href="http://testanything.org/">TAP</a></li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
                <p>You can pass any of these into <code>Y.Test.Runner.getResults()</code> to get a string with the test result information properly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
                formatted. For example:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
<pre class="code prettyprint">YUI({ useBrowserConsole: true }).use(&quot;test&quot;, function(Y){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
    &#x2F;&#x2F;tests go here
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
    &#x2F;&#x2F;get object of results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
    var resultsObject = Y.Test.Runner.getResults();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
    &#x2F;&#x2F;get XML results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
    var resultsXML = Y.Test.Runner.getResults(Y.Test.Format.XML);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
                <p>The XML format outputs results in the following
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
                format:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
<pre class="code prettyprint">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
&lt;report name=&quot;YUI Test Results&quot; passed=&quot;5&quot; failed=&quot;3&quot; ignored=&quot;1&quot; total=&quot;5&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
  &lt;testsuite name=&quot;yuisuite&quot; passed=&quot;5&quot; failed=&quot;0&quot; ignored=&quot;0&quot; total=&quot;5&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
    &lt;testcase name=&quot;Y.Anim&quot; passed=&quot;5&quot; failed=&quot;0&quot; ignored=&quot;0&quot; total=&quot;5&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
      &lt;test name=&quot;test_getEl&quot; result=&quot;pass&quot; message=&quot;Test passed&quot; &#x2F;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
      &lt;test name=&quot;test_isAnimated&quot; result=&quot;pass&quot; message=&quot;Test passed&quot; &#x2F;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
      &lt;test name=&quot;test_stop&quot; result=&quot;pass&quot; message=&quot;Test passed&quot; &#x2F;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
      &lt;test name=&quot;test_onStart&quot; result=&quot;pass&quot; message=&quot;Test passed&quot; &#x2F;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
      &lt;test name=&quot;test_endValue&quot; result=&quot;pass&quot; message=&quot;Test passed&quot; &#x2F;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
    &lt;&#x2F;testcase&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
  &lt;&#x2F;testsuite&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
&lt;&#x2F;report&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
                <p>The JSON format requires the <a href="../json/index.html">JSON utility</a> to be loaded on the page and outputs results in a format that follows the object/array hierarchy of the results object, such as:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
<pre class="code prettyprint">{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
    &quot;passed&quot;: 5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
    &quot;failed&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
    &quot;ignored&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
    &quot;total&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
    &quot;type&quot;: &quot;report&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
    &quot;name&quot;: &quot;YUI Test Results&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
    &quot;yuisuite&quot;:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
        &quot;passed&quot;: 5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
        &quot;failed&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
        &quot;ignored&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
        &quot;total&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
        &quot;type&quot;: &quot;testsuite&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
        &quot;name&quot;: &quot;yuisuite&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
        &quot;Y.Anim&quot;:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
            &quot;passed&quot;: 5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
            &quot;failed&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
            &quot;ignored&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
            &quot;total&quot;: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
            &quot;type&quot;:&quot;testcase&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
            &quot;name&quot;:&quot;Y.Anim&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
            &quot;test_getEl&quot;:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
                &quot;result&quot;:&quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
                &quot;message&quot;:&quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
                &quot;type&quot;:&quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
                &quot;name&quot;:&quot;test_getEl&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
            &quot;test_isAnimated&quot;:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
                &quot;result&quot;:&quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
                &quot;message&quot;:&quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
                &quot;type&quot;:&quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
                &quot;name&quot;:&quot;test_isAnimated&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
            &quot;test_stop&quot;:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
                &quot;result&quot;:&quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
                &quot;message&quot;:&quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
                &quot;type&quot;:&quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
                &quot;name&quot;:&quot;test_stop&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
            &quot;test_onStart&quot;:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
                &quot;result&quot;:&quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
                &quot;message&quot;:&quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
                &quot;type&quot;:&quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
                &quot;name&quot;:&quot;test_onStart&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
            &quot;test_endValue&quot;:{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
                &quot;result&quot;:&quot;pass&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
                &quot;message&quot;:&quot;Test passed.&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
                &quot;type&quot;:&quot;test&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
                &quot;name&quot;:&quot;test_endValue&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
<p>The JUnit XML format outputs results in the following format:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
<pre class="code prettyprint">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
&lt;testsuites&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
    &lt;testsuite name=&quot;Y.Anim&quot; failures=&quot;0&quot; total=&quot;5&quot; time=&quot;0.0060&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
        &lt;testcase name=&quot;test_getEl&quot; time=&quot;0.0&quot;&gt;&lt;&#x2F;testcase&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
        &lt;testcase name=&quot;test_isAnimated&quot; time=&quot;0.0010&quot;&gt;&lt;&#x2F;testcase&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
        &lt;testcase name=&quot;test_stop&quot; time=&quot;0.0010&quot;&gt;&lt;&#x2F;testcase&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
        &lt;testcase name=&quot;test_onStart&quot; time=&quot;0.0010&quot;&gt;&lt;&#x2F;testcase&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
        &lt;testcase name=&quot;test_endValue&quot; time=&quot;0.0010&quot;&gt;&lt;&#x2F;testcase&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
    &lt;&#x2F;testsuite&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
&lt;&#x2F;testsuites&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
<p>Note that there isn't a direct mapping between YUI Test test suites and JUnit test suites, so some
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
of the hierarchical information is lost.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
<p>The TAP format outputs results in the following format:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
<pre class="code">1..5
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
#Begin report YUI Test Results (0 failed of 5)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
#Begin testcase Y.Anim (0 failed of 5)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
ok 1 - testGetServiceFromUntrustedModule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
ok 2 - testGetServiceFromTrustedModule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
ok 3 - testGetServiceFromService
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
ok 4 - testGetServiceMultipleTimesFromService
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
ok 5 - testGetServiceMultipleTimesFromUntrustedModule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
#End testcase Y.Anim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
#End report YUI Test Results</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
                <p>The XML, JSON, and JUnit XML formats produce a string with no extra white space (white space and indentation shown here is for readability
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
                purposes only).</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
                <h2 id="test-reporting">Test Reporting</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
                <p>When all tests have been completed and the results object has been returned, you can post those results to a server
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
                using a <code>Y.Test.Reporter</code> object. A <code>Y.Test.Reporter</code> object creates a form that is POSTed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
                to a specific URL with the following fields:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
                    <li><code>results</code> - the serialized results object.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
                    <li><code>useragent</code> - the user-agent string of the browser.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
                    <li><code>timestamp</code> - the date and time that the report was sent.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
                <p>You can create a new <code>Y.Test.Reporter</code> object by passing in the URL to report to. The results object can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
                then be passed into the <code>report()</code> method to submit the results:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
<pre class="code prettyprint">var reporter = new Y.Test.Reporter(&quot;http:&#x2F;&#x2F;www.yourserver.com&#x2F;path&#x2F;to&#x2F;target&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
reporter.report(results);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
                <p>The form submission happens behind-the-scenes and will not cause your page to navigate away. This operation is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
                one direction; the reporter does not get any content back from the server.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
                <p>There are four predefined serialization formats for results objects: </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
                <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
                    <li><code>Y.Test.Format.XML</code> (default)</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
                    <li><code>Y.Test.Format.JSON</code></li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
                    <li><code>Y.Test.Format.JUnitXML</code></li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
                    <li><code>Y.Test.Format.TAP</code></li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
                </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
                <p>The format in which to submit the results can be specified in the <code>Y.Test.Reporter</code> constructor by passing in the appropriate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
                <code>Y.Test.Format</code> value (when no argument is specified, <code>Y.Test.Format.XML</code> is used:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
<pre class="code prettyprint">var reporter = new Y.Test.Reporter(&quot;http:&#x2F;&#x2F;www.yourserver.com&#x2F;path&#x2F;to&#x2F;target&quot;, Y.Test.Format.JSON);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
                <h3 id="custom-fields">Custom Fields</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
                <p>You can optionally specify additional fields to be sent with the results report by using the <code>addField()</code> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
                This method accepts two arguments: a name and a value. Any field added using <code>addField()</code> is POSTed along with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
                the default fields back to the server:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
<pre class="code prettyprint">reporter.addField(&quot;color&quot;, &quot;blue&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
reporter.addField(&quot;message&quot;, &quot;Hello world!&quot;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
                <p>Note that if you specify a field name that is the same as a default field, the custom field is ignored in favor of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
                the default field.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
                    <div id="toc" class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
                            <h2 class="no-toc">Table of Contents</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
                            <ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
<a href="#getting-started">Getting Started</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
<a href="#testcases">Using Test Cases</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
<a href="#setup-and-teardown">setUp() and tearDown()</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
<a href="#ignoring">Ignoring Tests</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
<a href="#intentional-errors">Intentional Errors</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
<a href="#assertions">Assertions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
<a href="#equality">Equality Assertions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
<a href="#sameness">Sameness Assertions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
<a href="#datatypes">Data Type Assertions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
<a href="#specialvalues">Special Value Assertions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
<a href="#forcedfailures">Forced Failures</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
<a href="#mockobjects">Mock Objects</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
<a href="#special-argument-values">Special Argument Values</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
<a href="#property-expectations">Property Expectations</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
<a href="#asynctests">Asynchronous Tests</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
<a href="#testsuites">Test Suites</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
<a href="#running-tests">Running Tests</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
<a href="#testrunner-events">TestRunner Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
<a href="#test-level-events">Test-Level Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
<a href="#testcase-level-events">TestCase-Level Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
<a href="#testsuite-level-events">TestSuite-Level Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
<a href="#testrunner-level-events">TestRunner-Level Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
<a href="#subscribing-to-events">Subscribing to Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
<a href="#viewing-results">Viewing Results</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
<a href="#test-reporting">Test Reporting</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
<a href="#custom-fields">Custom Fields</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
                                        <li data-description="Demonstrates basic usage of YUI Test for setting up and running tests.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
                                            <a href="test-simple-example.html">Simple Testing Example</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
                                        <li data-description="Demonstrates how to use advanced testing features such as defining tests that should fail, tests that should be ignored, and tests that should throw an error.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
                                            <a href="test-advanced-test-options.html">Advanced Test Options</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
                                        <li data-description="Demonstrates how to use the ArrayAssert object to test array data.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
                                            <a href="test-array-tests.html">Array Processing</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
                                        <li data-description="Demonstrates basic asynchronous tests.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
                                            <a href="test-async-test.html">Asynchronous Testing</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
                                        <li data-description="Demonstrates using events with asynchronous tests.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
                                            <a href="test-async-event-tests.html">Asynchronous Event Testing</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
    assets: '../assets/test',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
    name: 'test',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
    title: 'Test',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1468
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
YUI.Env.Tests.examples.push('test-simple-example');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
YUI.Env.Tests.examples.push('test-advanced-test-options');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
YUI.Env.Tests.examples.push('test-array-tests');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
YUI.Env.Tests.examples.push('test-async-test');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
YUI.Env.Tests.examples.push('test-async-event-tests');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
</html>