コード例 #1
0
        public void WildcardDigestReturnsFalseForNonMatches(string wildcard, string testString, bool maybeMatches)
        {
            WildcardDigest wildcardDigest   = WildcardDigest.Create(wildcard);
            WildcardDigest testStringDigest = WildcardDigest.Create(testString);

            Assert.Equal(maybeMatches, testStringDigest.MaybeMatches(wildcardDigest));
        }
コード例 #2
0
        /// <summary>
        /// Create a string digest
        /// </summary>
        /// <param name="s">The string to digest.</param>
        /// <returns>A digest which can be used to quickly eliminate
        /// strings which will not match a wildcard check.</returns>
        public static WildcardDigest Create(string s)
        {
            WildcardDigest digest = new WildcardDigest();

            for (int index = 0; index < s.Length; ++index)
            {
                digest.value |= s[index] == '?' || s[index] == '*' ? 0
                 : s[index] > MaxAsciiValue ? 1 : Bits[s[index]];
            }

            return(digest);
        }
コード例 #3
0
 /// <summary>
 /// Return true if the string which produced this digest might
 /// match the digest produced by the wildcard string.
 /// </summary>
 /// <param name="wildcard">The digest of the wildcard pattern</param>
 /// <returns>True, if but not only if the string is a match.</returns>
 public bool MaybeMatches(WildcardDigest wildcard)
 => wildcard.value == (value & wildcard.value);