aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2012-11-14 05:59:21 +0000
committerStephen Blott2012-11-14 05:59:21 +0000
commit049cf4314fc2e97e0f5b09cd8a8d066e2c04eb8a (patch)
tree50507491aa7095e9285a7bc4e44735d498221fd3
parent9225a09cec3db2213a1324f20ec6195ad281dbef (diff)
downloadvimium-049cf4314fc2e97e0f5b09cd8a8d066e2c04eb8a.tar.bz2
RegexpCache: reorganise and improve tests.
-rw-r--r--background_scripts/completion.coffee6
-rw-r--r--tests/unit_tests/completion_test.coffee10
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")