diff options
| author | Stephen Blott | 2012-11-14 05:59:21 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2012-11-14 05:59:21 +0000 | 
| commit | 049cf4314fc2e97e0f5b09cd8a8d066e2c04eb8a (patch) | |
| tree | 50507491aa7095e9285a7bc4e44735d498221fd3 | |
| parent | 9225a09cec3db2213a1324f20ec6195ad281dbef (diff) | |
| download | vimium-049cf4314fc2e97e0f5b09cd8a8d066e2c04eb8a.tar.bz2 | |
RegexpCache: reorganise and improve tests.
| -rw-r--r-- | background_scripts/completion.coffee | 6 | ||||
| -rw-r--r-- | tests/unit_tests/completion_test.coffee | 10 | 
2 files changed, 11 insertions, 5 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee index c99a94cb..951d0756 100644 --- a/background_scripts/completion.coffee +++ b/background_scripts/completion.coffee @@ -355,10 +355,8 @@ RegexpCache =      # Avoid cost of constructing new strings if prefix/suffix are empty (which is expected to be a common case).      regexpString = prefix + regexpString if prefix      regexpString = regexpString + suffix if suffix -    return @cache[regexpString] if @cache[regexpString] -    # Smartcase: regexp is case insensitive, unless `string` contains a capital letter. -    modifier = if /[A-Z]/.test string then "" else "i" -    @cache[regexpString] = new RegExp(regexpString, modifier) +    # Smartcase: Regexp is case insensitive, unless `string` contains a capital letter (testing `string`, not `regexpString`). +    @cache[regexpString] ||= new RegExp regexpString, (if /[A-Z]/.test string then "" else "i")  # Provides cached access to Chrome's history. As the user browses to new pages, we add those pages to this  # history cache. diff --git a/tests/unit_tests/completion_test.coffee b/tests/unit_tests/completion_test.coffee index 0d1b90c3..fb267f63 100644 --- a/tests/unit_tests/completion_test.coffee +++ b/tests/unit_tests/completion_test.coffee @@ -266,10 +266,18 @@ context "RankingUtils",    should "do a case insensitive match on several terms", ->      assert.isTrue RankingUtils.matches(["ari"], "DOES_NOT_MATCH", "DOES_NOT_MATCH_EITHER", "MARio") -  should "do a smartcase match", -> +  should "do a smartcase match (positive)", ->      assert.isTrue RankingUtils.matches(["Mar"], "Mario") + +  should "do a smartcase match (negative)", ->      assert.isFalse RankingUtils.matches(["Mar"], "mario") +  should "do a match with regexp meta-characters (positive)", -> +    assert.isTrue RankingUtils.matches(["ma.io"], "ma.io") + +  should "do a match with regexp meta-characters (negative)", -> +    assert.isFalse RankingUtils.matches(["ma.io"], "mario") +    should "do a smartcase match on full term", ->      assert.isTrue RankingUtils.matches(["Mario"], "Mario")      assert.isFalse RankingUtils.matches(["Mario"], "mario")  | 
