public virtual void testReset()
        {
            const string pattern = "helloworld";

            var matcher = new FileNameMatcher(pattern, null);
            matcher.Append("helloworld");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            matcher.Reset();
            matcher.Append("hello");
            Assert.AreEqual(false, matcher.IsMatch());
            Assert.AreEqual(true, matcher.CanAppendMatch());
            matcher.Append("world");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            matcher.Append("to much");
            Assert.AreEqual(false, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            matcher.Reset();
            matcher.Append("helloworld");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
        }
        public virtual void testCreateMatcherForSuffix()
        {
            const string pattern = "helloworld";

            var matcher = new FileNameMatcher(pattern, null);
            matcher.Append("hello");

            FileNameMatcher childMatcher = matcher.CreateMatcherForSuffix();
            Assert.AreEqual(false, matcher.IsMatch());
            Assert.AreEqual(true, matcher.CanAppendMatch());
            Assert.AreEqual(false, childMatcher.IsMatch());
            Assert.AreEqual(true, childMatcher.CanAppendMatch());
            matcher.Append("world");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            Assert.AreEqual(false, childMatcher.IsMatch());
            Assert.AreEqual(true, childMatcher.CanAppendMatch());
            childMatcher.Append("world");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            Assert.AreEqual(true, childMatcher.IsMatch());
            Assert.AreEqual(false, childMatcher.CanAppendMatch());
            childMatcher.Reset();
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            Assert.AreEqual(false, childMatcher.IsMatch());
            Assert.AreEqual(true, childMatcher.CanAppendMatch());
            childMatcher.Append("world");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            Assert.AreEqual(true, childMatcher.IsMatch());
            Assert.AreEqual(false, childMatcher.CanAppendMatch());
        }
 private static void AssertMatch(string pattern, string input, bool matchExpected, bool appendCanMatchExpected)
 {
     var matcher = new FileNameMatcher(pattern, null);
     matcher.Append(input);
     Assert.AreEqual(matchExpected, matcher.IsMatch());
     Assert.AreEqual(appendCanMatchExpected, matcher.CanAppendMatch());
 }
        public virtual void testCopyConstructor()
        {
            const string pattern = "helloworld";

            var matcher = new FileNameMatcher(pattern, null);
            matcher.Append("hello");

            var copy = new FileNameMatcher(matcher);
            Assert.AreEqual(false, matcher.IsMatch());
            Assert.AreEqual(true, matcher.CanAppendMatch());
            Assert.AreEqual(false, copy.IsMatch());
            Assert.AreEqual(true, copy.CanAppendMatch());
            matcher.Append("world");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            Assert.AreEqual(false, copy.IsMatch());
            Assert.AreEqual(true, copy.CanAppendMatch());
            copy.Append("world");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            Assert.AreEqual(true, copy.IsMatch());
            Assert.AreEqual(false, copy.CanAppendMatch());
            copy.Reset();
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            Assert.AreEqual(false, copy.IsMatch());
            Assert.AreEqual(true, copy.CanAppendMatch());
            copy.Append("helloworld");
            Assert.AreEqual(true, matcher.IsMatch());
            Assert.AreEqual(false, matcher.CanAppendMatch());
            Assert.AreEqual(true, copy.IsMatch());
            Assert.AreEqual(false, copy.CanAppendMatch());
        }
 ///	<summary>
 /// A copy constructor which creates a new <seealso cref="FileNameMatcher"/> with the
 /// same state and Reset point like <code>other</code>.
 /// </summary>
 /// <param name="other">
 /// another <seealso cref="FileNameMatcher"/> instance.
 /// </param>
 public FileNameMatcher(FileNameMatcher other)
     : this(other._headsStartValue, other._heads)
 {
 }