blob: e229f10c8fe960eb1b42b9c31ed52560dd7bf55a [file] [log] [blame]
<!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>