| // Copyright 2007 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| goog.provide('goog.spell.SpellCheckTest'); |
| goog.setTestOnly('goog.spell.SpellCheckTest'); |
| |
| goog.require('goog.spell.SpellCheck'); |
| goog.require('goog.testing.jsunit'); |
| |
| var TEST_DATA = { |
| 'Test': [goog.spell.SpellCheck.WordStatus.VALID, []], |
| 'strnig': [goog.spell.SpellCheck.WordStatus.INVALID, []], |
| 'wtih': [goog.spell.SpellCheck.WordStatus.INVALID, []], |
| 'a': [goog.spell.SpellCheck.WordStatus.VALID, []], |
| 'few': [goog.spell.SpellCheck.WordStatus.VALID, []], |
| 'misspeled': [goog.spell.SpellCheck.WordStatus.INVALID, |
| ['misspelled', 'misapplied', 'misspell']], |
| 'words': [goog.spell.SpellCheck.WordStatus.VALID, []], |
| 'Testing': [goog.spell.SpellCheck.WordStatus.VALID, []], |
| 'set': [goog.spell.SpellCheck.WordStatus.VALID, []], |
| 'status': [goog.spell.SpellCheck.WordStatus.VALID, []], |
| 'vaild': [goog.spell.SpellCheck.WordStatus.INVALID, []], |
| 'invalid': [goog.spell.SpellCheck.WordStatus.VALID, []], |
| 'ignoerd': [goog.spell.SpellCheck.WordStatus.INVALID, []] |
| }; |
| |
| function mockSpellCheckingFunction(words, spellChecker, callback) { |
| var len = words.length; |
| var data = []; |
| for (var i = 0; i < len; i++) { |
| var word = words[i]; |
| var status = TEST_DATA[word][0]; |
| var suggestions = TEST_DATA[word][1]; |
| data.push([word, status, suggestions]); |
| } |
| callback.call(spellChecker, data); |
| } |
| |
| |
| function testWordMatching() { |
| var spell = new goog.spell.SpellCheck(mockSpellCheckingFunction); |
| |
| var valid = goog.spell.SpellCheck.WordStatus.VALID; |
| var invalid = goog.spell.SpellCheck.WordStatus.INVALID; |
| |
| spell.checkBlock('Test strnig wtih a few misspeled words.'); |
| assertEquals(valid, spell.checkWord('Test')); |
| assertEquals(invalid, spell.checkWord('strnig')); |
| assertEquals(invalid, spell.checkWord('wtih')); |
| assertEquals(valid, spell.checkWord('a')); |
| assertEquals(valid, spell.checkWord('few')); |
| assertEquals(invalid, spell.checkWord('misspeled')); |
| assertEquals(valid, spell.checkWord('words')); |
| } |
| |
| |
| function testSetWordStatusValid() { |
| var spell = new goog.spell.SpellCheck(mockSpellCheckingFunction); |
| |
| var valid = goog.spell.SpellCheck.WordStatus.VALID; |
| |
| spell.checkBlock('Testing set status vaild.'); |
| spell.setWordStatus('vaild', valid); |
| |
| assertEquals(valid, spell.checkWord('vaild')); |
| } |
| |
| function testSetWordStatusInvalid() { |
| var spell = new goog.spell.SpellCheck(mockSpellCheckingFunction); |
| |
| var valid = goog.spell.SpellCheck.WordStatus.VALID; |
| var invalid = goog.spell.SpellCheck.WordStatus.INVALID; |
| |
| spell.checkBlock('Testing set status invalid.'); |
| spell.setWordStatus('invalid', invalid); |
| |
| assertEquals(invalid, spell.checkWord('invalid')); |
| } |
| |
| |
| function testSetWordStatusIgnored() { |
| var spell = new goog.spell.SpellCheck(mockSpellCheckingFunction); |
| |
| var ignored = goog.spell.SpellCheck.WordStatus.IGNORED; |
| |
| spell.checkBlock('Testing set status ignoerd.'); |
| spell.setWordStatus('ignoerd', ignored); |
| |
| assertEquals(ignored, spell.checkWord('ignoerd')); |
| } |
| |
| |
| function testGetSuggestions() { |
| var spell = new goog.spell.SpellCheck(mockSpellCheckingFunction); |
| |
| spell.checkBlock('Test strnig wtih a few misspeled words.'); |
| var suggestions = spell.getSuggestions('misspeled'); |
| assertEquals(3, suggestions.length); |
| } |