OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <title>audit.js: basic tests</title> | 4 <title> |
5 <script src="../../resources/testharness.js"></script> | 5 audit.js: basic tests |
6 <script src="../../resources/testharnessreport.js"></script> | 6 </title> |
7 <script src="../resources/audit.js"></script> | 7 <script src="../../resources/testharness.js"></script> |
8 </head> | 8 <script src="../../resources/testharnessreport.js"></script> |
9 <body> | 9 <script src="../resources/audit.js"></script> |
10 <script> | 10 </head> |
11 var audit = Audit.createTaskRunner({ requireResultFile: true }); | 11 <body> |
| 12 <script id="layout-test-code"> |
| 13 let audit = Audit.createTaskRunner({requireResultFile: true}); |
12 | 14 |
13 | 15 |
14 // Basic assertion testing. | 16 // Basic assertion testing. |
15 audit.define({ | 17 audit.define( |
16 label: 'basic', | 18 { |
17 description: 'Simple unit tests for basic assertions.' | 19 label: 'basic', |
18 }, function (task, should) { | 20 description: 'Simple unit tests for basic assertions.' |
19 should(OfflineAudioContext, 'OfflineAudioContext').exist(); | 21 }, |
20 should(function () { var foo1 = 0; }, 'Setting foo1 to 0').notThrow(); | 22 function(task, should) { |
21 should(function () { var foo2 = bar; }).throw(); | 23 should(OfflineAudioContext, 'OfflineAudioContext').exist(); |
22 should(function () { var foo3 = bar; }).throw('ReferenceError'); | 24 should(function() { |
23 should(function () { var foo4 = bar; }).throw(null); | 25 let foo1 = 0; |
24 should(function () { var foo5 = bar; }).throw(undefined); | 26 }, 'Setting foo1 to 0').notThrow(); |
25 should(() => { should(); }, 'Calling should() with no argument') | 27 should(function() { |
26 .throw('Error'); | 28 let foo2 = bar; |
27 should(3 < 5, '3 < 5').beTrue(); | 29 }).throw(); |
28 should(false).beFalse(); | 30 should(function() { |
29 should(1).beEqualTo(1) | 31 let foo3 = bar; |
30 should(1).notBeEqualTo(2) | 32 }).throw('ReferenceError'); |
31 should(typeof AudioContext.prototype).beEqualTo('object'); | 33 should(function() { |
32 should(2).beGreaterThan(1); | 34 let foo4 = bar; |
33 should(2).beGreaterThanOrEqualTo(2); | 35 }).throw(null); |
34 should(1).beLessThan(2); | 36 should(function() { |
35 should(1).beLessThanOrEqualTo(1); | 37 let foo5 = bar; |
36 should(should(1).beEqualTo(1), 'should(1).beEqualTo(1)').beTrue(); | 38 }).throw(undefined); |
37 should(true, 'The message is').message('truthful!', 'false!'); | 39 should(() => { |
| 40 should(); |
| 41 }, 'Calling should() with no argument').throw('Error'); |
| 42 should(3 < 5, '3 < 5').beTrue(); |
| 43 should(false).beFalse(); |
| 44 should(1).beEqualTo(1) |
| 45 should(1).notBeEqualTo(2) |
| 46 should(typeof AudioContext.prototype).beEqualTo('object'); |
| 47 should(2).beGreaterThan(1); |
| 48 should(2).beGreaterThanOrEqualTo(2); |
| 49 should(1).beLessThan(2); |
| 50 should(1).beLessThanOrEqualTo(1); |
| 51 should(should(1).beEqualTo(1), 'should(1).beEqualTo(1)').beTrue(); |
| 52 should(true, 'The message is').message('truthful!', 'false!'); |
38 | 53 |
39 should(BaseAudioContext.prototype, 'BaseAudioContext.prototype') | 54 should(BaseAudioContext.prototype, 'BaseAudioContext.prototype') |
40 .haveOwnProperty('createGain'); | 55 .haveOwnProperty('createGain'); |
41 should(BaseAudioContext.prototype, 'BaseAudioContext.prototype') | 56 should(BaseAudioContext.prototype, 'BaseAudioContext.prototype') |
42 .notHaveOwnProperty('startRendering'); | 57 .notHaveOwnProperty('startRendering'); |
43 | 58 |
44 let ac = new AudioContext(); | 59 let ac = new AudioContext(); |
45 let sourceNode = new AudioBufferSourceNode(ac); | 60 let sourceNode = new AudioBufferSourceNode(ac); |
46 should(sourceNode, 'An AudioBufferSourceNode') | 61 should(sourceNode, 'An AudioBufferSourceNode') |
47 .inheritFrom('AudioScheduledSourceNode'); | 62 .inheritFrom('AudioScheduledSourceNode'); |
48 should(sourceNode, 'An AudioBufferSourceNode') | 63 should(sourceNode, 'An AudioBufferSourceNode') |
49 .inheritFrom('AudioNode'); | 64 .inheritFrom('AudioNode'); |
50 | 65 |
51 let oac = new OfflineAudioContext(1, 128, 44100); | 66 let oac = new OfflineAudioContext(1, 128, 44100); |
52 Promise.all([ | 67 Promise |
53 should(oac.startRendering(), 'Start OAC rendering').beResolved(), | 68 .all([ |
54 should(oac.decodeAudioData(), 'Decoding audio data with no argument'
) | 69 should(oac.startRendering(), 'Start OAC rendering') |
55 .beRejected(), | 70 .beResolved(), |
56 should(oac.suspend(), 'Suspending OAC with no argument') | 71 should( |
57 .beRejectedWith('TypeError') | 72 oac.decodeAudioData(), |
58 ]).then(task.done.bind(task)); | 73 'Decoding audio data with no argument') |
59 } | 74 .beRejected(), |
60 ); | 75 should(oac.suspend(), 'Suspending OAC with no argument') |
| 76 .beRejectedWith('TypeError') |
| 77 ]) |
| 78 .then(task.done.bind(task)); |
| 79 }); |
61 | 80 |
62 | 81 |
63 // Advanced, mostly array-based numerical testing. Note that some codes | 82 // Advanced, mostly array-based numerical testing. Note that some codes |
64 // are commented out to avoid the trybot failure. These failures are | 83 // are commented out to avoid the trybot failure. These failures are |
65 // intentional, to demonstrate how the detailed failure report works. | 84 // intentional, to demonstrate how the detailed failure report works. |
66 audit.define({ | 85 audit.define( |
67 label: 'numerical', | 86 {label: 'numerical', description: 'Numerical assertion unit test.'}, |
68 description: 'Numerical assertion unit test.' | 87 function(task, should) { |
69 }, function (task, should) { | 88 should(2.3).beCloseTo(2, {threshold: 0.3}); |
70 should(2.3).beCloseTo(2, { threshold: 0.3 }); | 89 should([1, 1, 1]).beConstantValueOf(1); |
71 should([1, 1, 1]).beConstantValueOf(1); | 90 should([1, 0, 1]).notBeConstantValueOf(1); |
72 should([1, 0, 1]).notBeConstantValueOf(1); | 91 should([1, 0, 0, 1]).notBeConstantValueOf(1); |
73 should([1, 0, 0, 1]).notBeConstantValueOf(1); | 92 should([1, 1, 1]).beEqualToArray([1, 1, 1]); |
74 should([1, 1, 1]).beEqualToArray([1, 1, 1]); | 93 should([ |
75 should([1, 1, 1, 1, 2, 2, 3, 3, 3]) | 94 1, 1, 1, 1, 2, 2, 3, 3, 3 |
76 .containValues([1, 2, 3], 'one, two, three'); | 95 ]).containValues([1, 2, 3], 'one, two, three'); |
77 should([0.5, 0.5, 0.55, 0.5, 0.45, 0.5]).notGlitch(0.06); | 96 should([0.5, 0.5, 0.55, 0.5, 0.45, 0.5]).notGlitch(0.06); |
78 task.done(); | 97 task.done(); |
79 } | 98 }); |
80 ); | |
81 | 99 |
82 audit.define({ | 100 audit.define( |
83 label: 'numerical typed arrays', | 101 { |
84 description: 'Numerical assertion unit test with typed arrays.' | 102 label: 'numerical typed arrays', |
85 }, function (task, should) { | 103 description: 'Numerical assertion unit test with typed arrays.' |
86 let testValues = [1,2,3]; | 104 }, |
87 should(Uint8Array.from(testValues), 'Uint8Array').beEqualToArray(testValue
s); | 105 function(task, should) { |
88 should(Float32Array.from(testValues), 'Float32Array').beEqualToArray(testV
alues); | 106 let testValues = [1, 2, 3]; |
89 should(Float64Array.from(testValues), 'Float64Array').beEqualToArray(testV
alues); | 107 should(Uint8Array.from(testValues), 'Uint8Array') |
90 task.done(); | 108 .beEqualToArray(testValues); |
91 }); | 109 should(Float32Array.from(testValues), 'Float32Array') |
| 110 .beEqualToArray(testValues); |
| 111 should(Float64Array.from(testValues), 'Float64Array') |
| 112 .beEqualToArray(testValues); |
| 113 task.done(); |
| 114 }); |
92 | 115 |
93 // Test Audit.loadFileFromUrl() within |should| assertion. | 116 // Test Audit.loadFileFromUrl() within |should| assertion. |
94 // See: crbug.com/701813 | 117 // See: crbug.com/701813 |
95 audit.define({ | 118 audit.define( |
96 label: 'load-file-in-should', | 119 { |
97 description: 'Test Audit.loadFileFromUrl() within |should| assertion.' | 120 label: 'load-file-in-should', |
98 }, (task, should) => { | 121 description: |
99 let url = '../resources/hyper-reality/laughter.wav'; | 122 'Test Audit.loadFileFromUrl() within |should| assertion.' |
100 let promise = should(Audit.loadFileFromUrl(url), | 123 }, |
101 'Loading file within should().beResolved()') | 124 (task, should) => { |
102 .beResolved(); | 125 let url = '../resources/hyper-reality/laughter.wav'; |
103 promise.then(() => { task.done() }); | 126 let promise = should( |
104 } | 127 Audit.loadFileFromUrl(url), |
105 ); | 128 'Loading file within should().beResolved()') |
| 129 .beResolved(); |
| 130 promise.then(() => {task.done()}); |
| 131 }); |
106 | 132 |
107 | 133 |
108 // The task headline needs to be printed even if there is no description is | 134 // The task headline needs to be printed even if there is no description |
109 // given. | 135 // is given. |
110 audit.define('dummy-label-string', function (task) { | 136 audit.define('dummy-label-string', function(task) { |
111 task.done(); | 137 task.done(); |
112 }); | 138 }); |
113 | 139 |
114 | 140 |
115 // Test the same thing in a differen way. | 141 // Test the same thing in a differen way. |
116 audit.define({ label: 'dummy-label-object' }, function (task) { | 142 audit.define({label: 'dummy-label-object'}, function(task) { |
117 task.done(); | 143 task.done(); |
118 }); | 144 }); |
119 | 145 |
120 | 146 |
121 // This task is defined, but you can selectively opt it out when the task | 147 // This task is defined, but you can selectively opt it out when the task |
122 // runs. If you would like to see how failure cases get printed, include | 148 // runs. If you would like to see how failure cases get printed, include |
123 // this task and launch the task runner. | 149 // this task and launch the task runner. |
124 audit.define('empty', function (task, should) { | 150 audit.define('empty', function(task, should) { |
125 task.done(); | 151 task.done(); |
126 }); | 152 }); |
127 | 153 |
128 | 154 |
129 // You can enumerate tasks you want to execute in the order, or simply pass | 155 // You can enumerate tasks you want to execute in the order, or simply |
130 // no argument to run all the defined tasks. | 156 // pass no argument to run all the defined tasks. |
131 audit.run('numerical', 'numerical typed arrays', 'basic', | 157 audit.run( |
132 'load-file-in-should', 'dummy-label-string', 'dummy-label-object')
; | 158 'numerical', 'numerical typed arrays', 'basic', 'load-file-in-should', |
133 </script> | 159 'dummy-label-string', 'dummy-label-object'); |
134 </body> | 160 </script> |
| 161 </body> |
135 </html> | 162 </html> |
OLD | NEW |