| <!doctype html> |
| <title>Test basic interaction with the Speech JavaScript API</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script type="module"> |
| import {MockSpeechRecognizer} from '../resources/mock-speechrecognizer.js'; |
| |
| const mock = new MockSpeechRecognizer(); |
| |
| test(() => { |
| assert_true('webkitSpeechRecognition' in self); |
| assert_false(webkitSpeechRecognition == null); |
| }, "Check constructors"); |
| |
| async_test(t => { |
| const r = new webkitSpeechRecognition(); |
| let count = 0; |
| |
| r.onstart = t.step_func(() => { assert_equals(count, 0); count++; }); |
| r.onaudiostart = t.step_func(() => { assert_equals(count, 1); count++ }); |
| r.onsoundstart = t.step_func(() => { assert_equals(count, 2); count++ }); |
| r.onspeechstart = t.step_func(() => { assert_equals(count, 3); count++ }); |
| |
| r.onresult = t.step_func((event) => { |
| assert_equals(count, 4); |
| count++; |
| assert_equals(event.emma, null); |
| assert_equals(event.interpretation, null); |
| assert_equals(event.results.length, 1); |
| assert_equals(event.results.item(-1), null); |
| assert_equals(event.results[0].length, 1); |
| assert_true(event.results[0].isFinal); |
| assert_equals(event.results[0].item(0).transcript, 'hello, world'); |
| assert_approx_equals(event.results[0].item(0).confidence, 0.42, 1e-3); |
| assert_equals(event.results[0].item(-1), null); |
| }); |
| |
| r.onspeechend = t.step_func(() => { assert_equals(count, 5); count++; }); |
| r.onsoundend = t.step_func(() => { assert_equals(count, 6); count++; }); |
| r.onaudioend = t.step_func(() => { assert_equals(count, 7); count++; }); |
| |
| r.onend = t.step_func_done(() => { |
| assert_equals(count, 8); |
| count++; |
| }); |
| |
| mock.addMockSpeechRecognitionResult('hello, world', 0.42); |
| r.start(); |
| }, "One match test"); |
| |
| async_test(t => { |
| const r = new webkitSpeechRecognition(); |
| let count = 0; |
| |
| r.onstart = t.step_func(() => { assert_equals(count, 0); count++; }); |
| r.onaudiostart = t.step_func(() => { assert_equals(count, 1); count++ }); |
| r.onsoundstart = t.step_func(() => { assert_equals(count, 2); count++ }); |
| r.onspeechstart = t.step_func(() => { assert_equals(count, 3); count++ }); |
| |
| r.onnomatch = t.step_func((event) => { |
| assert_equals(count, 4); |
| count++; |
| assert_equals(event.results, null); |
| }); |
| |
| r.onspeechend = t.step_func(() => { assert_equals(count, 5); count++; }); |
| r.onsoundend = t.step_func(() => { assert_equals(count, 6); count++; }); |
| r.onaudioend = t.step_func(() => { assert_equals(count, 7); count++; }); |
| |
| r.onend = t.step_func_done(() => { |
| assert_equals(count, 8); |
| count++; |
| }); |
| |
| r.start(); |
| }); |
| |
| </script> |