| Index: chrome/test/data/chromeos/liblouis_nacl/test.js
|
| diff --git a/chrome/test/data/chromeos/liblouis_nacl/test.js b/chrome/test/data/chromeos/liblouis_nacl/test.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d7b9806a086abf945f03e7d57c52ab53fd7c47aa
|
| --- /dev/null
|
| +++ b/chrome/test/data/chromeos/liblouis_nacl/test.js
|
| @@ -0,0 +1,85 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +var pass = chrome.test.callbackPass;
|
| +
|
| +var TABLE_NAME = 'en-us-comp8.ctb';
|
| +var TEXT = 'hello';
|
| +// Translation of the above string as a hexadecimal sequence of cells.
|
| +var CELLS = '1311070715';
|
| +
|
| +var pendingCallback = null;
|
| +var pendingMessageId = -1;
|
| +var nextMessageId = 0;
|
| +var naclEmbed = null;
|
| +
|
| +function loadLibrary(callback) {
|
| + var embed = document.createElement('embed');
|
| + embed.src = 'liblouis_nacl.nmf';
|
| + embed.type = 'application/x-nacl';
|
| + embed.width = 0;
|
| + embed.height = 0;
|
| + embed.setAttribute('tablesdir', 'tables');
|
| + embed.addEventListener('load', function() {
|
| + console.log("liblouis loaded");
|
| + naclEmbed = embed;
|
| + callback();
|
| + }, false /* useCapture */);
|
| + embed.addEventListener('error', function() {
|
| + chrome.test.fail('liblouis load error');
|
| + }, false /* useCapture */);
|
| + embed.addEventListener('message', function(e) {
|
| + var reply = JSON.parse(e.data);
|
| + console.log('Message from liblouis: ' + e.data);
|
| + pendingCallback(reply);
|
| + }, false /* useCapture */);
|
| + document.body.appendChild(embed);
|
| +}
|
| +
|
| +
|
| +function rpc(command, args, callback) {
|
| + var messageId = '' + nextMessageId++;
|
| + args['command'] = command;
|
| + args['message_id'] = messageId;
|
| + var json = JSON.stringify(args)
|
| + console.log('Message to liblouis: ' + json);
|
| + naclEmbed.postMessage(json);
|
| + pendingCallback = callback;
|
| + pendingMessageId = messageId;
|
| +}
|
| +
|
| +
|
| +function expectSuccessReply(callback) {
|
| + return function(reply) {
|
| + chrome.test.assertEq(pendingMessageId, reply['in_reply_to']);
|
| + chrome.test.assertTrue(reply['error'] === undefined);
|
| + chrome.test.assertTrue(reply['success']);
|
| + if (callback) {
|
| + callback(reply);
|
| + }
|
| + };
|
| +}
|
| +
|
| +
|
| +loadLibrary(function() {
|
| + chrome.test.runTests([
|
| + function testGetTranslator() {
|
| + rpc('CheckTable', { 'table_name': TABLE_NAME},
|
| + pass(expectSuccessReply()));
|
| + },
|
| +
|
| + function testTranslateString() {
|
| + rpc('Translate', { 'table_name': TABLE_NAME, 'text': TEXT},
|
| + pass(expectSuccessReply(function(reply) {
|
| + chrome.test.assertEq(CELLS, reply['cells']);
|
| + })));
|
| + },
|
| +
|
| + function testBackTranslateString() {
|
| + rpc('BackTranslate', { 'table_name': TABLE_NAME, 'cells': CELLS},
|
| + pass(expectSuccessReply(function(reply) {
|
| + chrome.test.assertEq(TEXT, reply['text']);
|
| + })));
|
| + },
|
| +])});
|
|
|