From 784555b7dbd9502c5967ea151de1eaf97e697ed7 Mon Sep 17 00:00:00 2001 From: Eddie Antonio Santos Date: Tue, 4 Jun 2019 11:08:41 -0600 Subject: [PATCH] Add a test for the default wordform to key function. --- .../headless/worker-predict-trie.js | 31 ++++++++++++++++++- .../in_browser/json/tries/accented.json | 1 + .../worker/models/trie-model.ts | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 common/predictive-text/unit_tests/in_browser/json/tries/accented.json diff --git a/common/predictive-text/unit_tests/headless/worker-predict-trie.js b/common/predictive-text/unit_tests/headless/worker-predict-trie.js index 889fcae959..a19994f803 100644 --- a/common/predictive-text/unit_tests/headless/worker-predict-trie.js +++ b/common/predictive-text/unit_tests/headless/worker-predict-trie.js @@ -154,7 +154,36 @@ describe('LMLayerWorker trie model for word lists', function() { firstResults.map(s => s.displayAs) ); }); - }) + }); + + describe('The default key function', function () { + it('uses the default key function', function () { + var model = new TrieModel(jsonFixture('tries/accented')); + + // «nai| » [Send] + // [ ??? ] [ naïve ] [ ??? ] + var [suggestion] = model.predict({ + insert: 'i', deleteLeft: 0 + }, { + left: 'na', + startOfBuffer: false, + endOfBuffer: true + }).map(getSample); + assert.strictEqual(suggestion.displayAs, 'naïve'); + + // «Let‘s get some pho| » [Send] + // [ ??? ] [ phở ] [ ??? ] + var [suggestion] = model.predict({ + insert: 'o', deleteLeft: 0 + }, { + left: 'Let‘s get some ph', + startOfBuffer: false, + endOfBuffer: true + }).map(getSample); + assert.strictEqual(suggestion.displayAs, 'phở'); + + }); + }); it('replaces the entire typed word when a suggestion is accepted', function () { // Ensure that all input is lower-cased when we try to look it up. diff --git a/common/predictive-text/unit_tests/in_browser/json/tries/accented.json b/common/predictive-text/unit_tests/in_browser/json/tries/accented.json new file mode 100644 index 0000000000..37213e1048 --- /dev/null +++ b/common/predictive-text/unit_tests/in_browser/json/tries/accented.json @@ -0,0 +1 @@ +{"type":"internal","weight":1,"values":["p","n"],"children":{"p":{"type":"leaf","weight":1,"entries":[{"key":"pho","weight":1,"content":"phở"}]},"n":{"type":"leaf","weight":1,"entries":[{"key":"naive","weight":1,"content":"naïve"}]}}} \ No newline at end of file diff --git a/common/predictive-text/worker/models/trie-model.ts b/common/predictive-text/worker/models/trie-model.ts index cec1070fac..39e3a33a1c 100644 --- a/common/predictive-text/worker/models/trie-model.ts +++ b/common/predictive-text/worker/models/trie-model.ts @@ -429,7 +429,7 @@ */ function defaultWordform2Key(wordform: string): SearchKey { return wordform - .replace(/[\u0100-\u2200]/, function (c) { + .replace(/[\u0100-\u2200]/g, function (c) { if (c in PARTIAL_NFD_LOOKUP) { return PARTIAL_NFD_LOOKUP[c]; }