From 7462f1707ea915f3e330c6465fa68255b8e08936 Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 1 May 2020 11:46:15 +0700 Subject: [PATCH] feat(web/engine): replaces basic keystroke test --- .../tests/cases/basic-engine.js | 55 +++++++++++++++++++ .../tests/cases/basic-init.js | 33 ----------- 2 files changed, 55 insertions(+), 33 deletions(-) create mode 100644 common/core/web/keyboard-processor/tests/cases/basic-engine.js diff --git a/common/core/web/keyboard-processor/tests/cases/basic-engine.js b/common/core/web/keyboard-processor/tests/cases/basic-engine.js new file mode 100644 index 0000000000..b04b1619bb --- /dev/null +++ b/common/core/web/keyboard-processor/tests/cases/basic-engine.js @@ -0,0 +1,55 @@ +var assert = require('chai').assert; +let fs = require('fs'); +let vm = require('vm'); + +let KeyboardProcessor = require('../../dist'); +let KMWRecorder = require('../../../tools/recorder/dist/nodeProctor'); + +// Required initialization setup. +global.com = KeyboardProcessor.com; // exports all keyboard-processor namespacing. + +describe('Engine - Basic Simulation', function() { + let testJSONtext = fs.readFileSync('../tests/resources/json/engine_tests/basic_lao_simulation.json'); + // Common test suite setup. + let testSuite = new KMWRecorder.KeyboardTest(JSON.parse(testJSONtext)); + + var keyboard; + let device = { + formFactor: 'desktop', + OS: 'windows', + browser: 'native' + } + + before(function() { + // -- START: Standard Recorder-based unit test loading boilerplate -- + // Load the keyboard. We'll need a KeyboardProcessor instance as an intermediary. + let kp = new KeyboardProcessor(); + + // These two lines will load a keyboard from its file; headless-mode `registerKeyboard` will + // automatically set the keyboard as active. + var script = new vm.Script(fs.readFileSync('../tests/' + testSuite.keyboard.filename)); + script.runInThisContext(); + + keyboard = kp.activeKeyboard; + assert.equal(keyboard.id, "Keyboard_" + testSuite.keyboard.id); + // -- END: Standard Recorder-based unit test loading boilerplate -- + + // This part provides extra assurance that the keyboard properly loaded. + assert.equal(keyboard.id, "Keyboard_lao_2008_basic"); + }); + + // Converts each test set into its own Mocha-level test. + for(let set of testSuite.inputTestSets) { + let proctor = new KMWRecorder.NodeProctor(keyboard, device, assert.equal); + + if(!proctor.compatibleWithSuite(testSuite)) { + it.skip(set.toTestName() + " - Cannot run this test suite on Node."); + } else { + it(set.toTestName(), function() { + // Refresh the proctor instance at runtime. + let proctor = new KMWRecorder.NodeProctor(keyboard, device, assert.equal); + set.test(proctor); + }); + } + } +}); \ No newline at end of file diff --git a/common/core/web/keyboard-processor/tests/cases/basic-init.js b/common/core/web/keyboard-processor/tests/cases/basic-init.js index b87ccfc057..c1ed7f6f07 100644 --- a/common/core/web/keyboard-processor/tests/cases/basic-init.js +++ b/common/core/web/keyboard-processor/tests/cases/basic-init.js @@ -42,37 +42,4 @@ describe('KeyboardProcessor', function() { assert.equal('Keyboard_khmer_angkor', kp.activeKeyboard.id, 'Unexpected keyboard id found after script load'); }); }); - - describe('processKeystroke', function() { - it('has simple output, no context', function() { - let kp = new KeyboardProcessor(); - - // These two lines will load a keyboard from its file; headless-mode `registerKeyboard` will - // automatically set the keyboard as active. - var script = new vm.Script(fs.readFileSync('../tests/resources/keyboards/khmer_angkor.js')); - script.runInThisContext(); - - // Fetch a key from the keyboard's layout. - let defaultLayer = kp.activeKeyboard.layout('desktop').getLayer('default'); - assert.isNotNull(defaultLayer); - let keyS = defaultLayer.getKey('K_S'); - assert.isNotNull(keyS); - - //Get the default synthetic key event for said key. - let mock = new com.keyman.text.Mock(); - let keyEvent = keyS.constructKeyEvent(kp, mock, - new com.keyman.text.EngineDeviceSpec('chrome', 'desktop', 'windows', false) - ); - - assert.isNotNull(keyEvent); - - let ruleBehavior = kp.processKeystroke(keyEvent, mock); - assert.isNotNull(ruleBehavior); - assert.isNotNull(ruleBehavior.transcription); - assert.equal(mock.getText(), 'ស', 'Unexpected output from key event'); - - let transform = ruleBehavior.transcription.transform; - assert.isNotNull(transform); - }) - }); });