| <!DOCTYPE html> |
| <html> |
| <head> |
| <title> |
| audit.js: handling failures |
| </title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../resources/audit.js"></script> |
| </head> |
| <body> |
| <script id="layout-test-code"> |
| // The task runner will print out a console message to ensure the text |
| // file comparison. |
| let audit = Audit.createTaskRunner({requireResultFile: true}); |
| |
| |
| // These assertions are supposed to be failed. The WPT (testharness) fails |
| // because the assertions are failing, but the existence of expected test |
| // result makes this test pass as long as the actual and the expected |
| // match. See the expected result file to see the logging message from |
| // Audit. |
| |
| |
| // Basic assertions. |
| audit.define( |
| { |
| label: 'basic-failure', |
| description: 'Testing basic assertion failures.' |
| }, |
| function(task, should) { |
| should(function() { |
| let foo = bar; |
| }, 'Setting foo to bar').notThrow(); |
| should(function() { |
| let foo = 0; |
| }).throw(ReferenceError); |
| should(3 > 5, '3 < 5').beTrue(); |
| should(true).beFalse(); |
| should(1, 'The number of channels').beEqualTo(2); |
| should(1).notBeEqualTo(1); |
| should(1).beNaN(); |
| should(NaN).notBeNaN(); |
| should(typeof 3.141592, 'typeof 3.141592').beEqualTo('string'); |
| should(1).beGreaterThan(2); |
| should(1).beGreaterThanOrEqualTo(2); |
| should(2).beLessThan(1); |
| should(2).beLessThanOrEqualTo(1); |
| should(should(1).beEqualTo(2), 'should(1).beEqualTo(2)').beTrue(); |
| should(false, 'The message is').message('truthful!', 'false!'); |
| |
| let oac = new OfflineAudioContext(1, 128, 44100); |
| Promise |
| .all([ |
| should( |
| oac.decodeAudioData(), |
| 'Decoding audio data with no argument') |
| .beResolved(), |
| should(oac.startRendering(), 'Start OAC rendering') |
| .beRejected(), |
| should(oac.suspend(), 'Suspending OAC with no argument') |
| .beRejectedWith('IndexSizeError') |
| ]) |
| .then(task.done.bind(task)); |
| }); |
| |
| |
| // Numerical assertions. |
| audit.define( |
| { |
| label: 'numerical-failures', |
| description: 'Testing numerical assertion failures.' |
| }, |
| function(task, should) { |
| should(0).beCloseTo(0.1, {threshold: 0}); |
| should(59, 'The measured decibel').beCloseTo(62, {threshold: 0.01}); |
| should([1, 8, 11, 18, 6, 5, 5, 5, 123, 49], 'Test array') |
| .beConstantValueOf(5); |
| should([0, 0, 0]).notBeConstantValueOf(0); |
| should([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]).beEqualToArray([ |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 |
| ]); |
| should([1, 1, 1, 1, 2, 2, 3, 3, 3]).containValues([1, 3, 2]); |
| should([1,1,2,2]).containValues([1,2,3]); |
| should([1,2,3,4,5]).containValues([1,2,3]); |
| should([0.5, 0.5, 0.55, 0.5, 0.45, 0.5]).notGlitch(0.04); |
| should([ |
| 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9 |
| ]).beCloseToArray([0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1], { |
| absoluteThreshold: 0.02 |
| }); |
| should([ |
| 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9 |
| ]).beCloseToArray([0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1], { |
| relativeThreshold: 0.1 |
| }); |
| should([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9]) |
| .beCloseToArray( |
| [0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1], |
| {absoluteThreshold: 0.02, relativeThreshold: 0.1}); |
| |
| // Tests extra info |
| should([ |
| 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 |
| ]).beCloseToArray([2, 3, 4, 5, 6, 7, 800, 900, 1000, 1100, 1200], { |
| absoluteThreshold: 0 |
| }); |
| task.done(); |
| }); |
| |
| // Testing the failure handling of Audit.loadFileFromUrl(). |
| audit.define( |
| { |
| label: 'load-file-in-should', |
| description: |
| 'Testing the failure handling of Audit.loadFileFromUrl().' |
| }, |
| (task, should) => { |
| let url = 'non-existent-audio-file.wav'; |
| let promise = |
| should( |
| Audit.loadFileFromUrl(url), |
| 'Loading non-existent file within should().beResolved()') |
| .beResolved(); |
| promise.then(() => {task.done()}); |
| }); |
| |
| // With no argument, this executes all tasks in the order defined. |
| audit.run(); |
| </script> |
| </body> |
| </html> |