Example #1
0
        public void EnumerateMultipleEntryListWithMatchingFilter()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo("a", size: 0, isFolder: false),
                new GVFltFileInfo("B", size: 0, isFolder: true),
                new GVFltFileInfo("c", size: 0, isFolder: false),
                new GVFltFileInfo("D.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.bat", size: 0, isFolder: false),
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("E.bat").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name == "E.bat"));
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("e.bat").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => string.Compare(entry.Name, "e.bat", StringComparison.OrdinalIgnoreCase) == 0));
            }
        }
Example #2
0
        public void RestartingScanWithFilterAdvancesEnumeratorToNewMatchingEntry()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo("a", size: 0, isFolder: false),
                new GVFltFileInfo("B", size: 0, isFolder: true),
                new GVFltFileInfo("c", size: 0, isFolder: false),
                new GVFltFileInfo("D.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.bat", size: 0, isFolder: false),
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.Current.ShouldBeSameAs(entries[0]);
                activeEnumeration.TrySaveFilterString("D.txt").ShouldEqual(true);
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.Current.Name.ShouldEqual("D.txt");

                activeEnumeration.RestartEnumeration("c");
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.Current.Name.ShouldEqual("c");
            }
        }
Example #3
0
        public void EnumerateMultipleEntryListWithEmptyFilter()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo("a", size: 0, isFolder: false),
                new GVFltFileInfo("B", size: 0, isFolder: true),
                new GVFltFileInfo("c", size: 0, isFolder: false),
                new GVFltFileInfo("D.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.bat", size: 0, isFolder: false),
            };

            // Test empty string ("") filter
            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString(string.Empty).ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }

            // Test null filter
            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString(null).ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }
        }
Example #4
0
        public void EnumerateSingleEntryListWithWildcardFilter()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo("a", size: 0, isFolder: false)
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.TrySaveFilterString("*").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.TrySaveFilterString("?").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                string filter = "*.*";
                activeEnumeration.TrySaveFilterString(filter).ShouldEqual(true);

                // "*.*" should only match when there is a . in the name
                activeEnumeration.IsCurrentValid.ShouldEqual(false);
                activeEnumeration.MoveNext().ShouldEqual(false);
                activeEnumeration.RestartEnumeration(filter);
                activeEnumeration.IsCurrentValid.ShouldEqual(false);
            }
        }
        public void EnumerateSingleEntryListWithWildcardFilter()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo("a", size: 0, isFolder: false)
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.TrySaveFilterString("*").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.TrySaveFilterString("?").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.TrySaveFilterString("*.*").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }
        }
        public void RestartingScanWithFilterAdvancesEnumeratorToFirstMatchingProjectedEntry()
        {
            GVFltFileInfo        c_foo_file_info = new GVFltFileInfo("c.foo", size: 0, isFolder: false);
            List <GVFltFileInfo> entries         = new List <GVFltFileInfo>()
            {
                c_foo_file_info,
                new GVFltFileInfo("C.TXT", size: 0, isFolder: false),
                new GVFltFileInfo("D.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.bat", size: 0, isFolder: false),
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.Current.ShouldBeSameAs(entries[0]);
                activeEnumeration.TrySaveFilterString("D.txt").ShouldEqual(true);
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.Current.Name.ShouldEqual("D.txt");

                c_foo_file_info.IsProjected = false;

                activeEnumeration.RestartEnumeration("c*");
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.Current.Name.ShouldEqual("C.TXT");
            }
        }
Example #7
0
 public void EnumerationHandlesEmptyList()
 {
     using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(new List <GVFltFileInfo>()))
     {
         activeEnumeration.IsCurrentValid.ShouldEqual(false);
         activeEnumeration.MoveNext().ShouldEqual(false);
         activeEnumeration.RestartEnumeration(string.Empty);
         activeEnumeration.IsCurrentValid.ShouldEqual(false);
     }
 }
Example #8
0
        public void EnumerateSingleEntryList()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo("a", size: 0, isFolder: false)
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }
        }
Example #9
0
        public void CannotSetMoreThanOneFilter()
        {
            string filterString = "*.*";

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(new List <GVFltFileInfo>()))
            {
                activeEnumeration.TrySaveFilterString(filterString).ShouldEqual(true);
                activeEnumeration.TrySaveFilterString(null).ShouldEqual(false);
                activeEnumeration.TrySaveFilterString(string.Empty).ShouldEqual(false);
                activeEnumeration.TrySaveFilterString("?").ShouldEqual(false);
                activeEnumeration.GetFilterString().ShouldEqual(filterString);
            }
        }
Example #10
0
        public void EnumerateMultipleEntries()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo("a", size: 0, isFolder: false),
                new GVFltFileInfo("B", size: 0, isFolder: true),
                new GVFltFileInfo("c", size: 0, isFolder: false),
                new GVFltFileInfo("D.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.bat", size: 0, isFolder: false),
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }
        }
Example #11
0
        public void EnumerateSingleEntryListWithNonMatchingFilter()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo("a", size: 0, isFolder: false)
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                string filter = "b";
                activeEnumeration.TrySaveFilterString(filter).ShouldEqual(true);
                activeEnumeration.IsCurrentValid.ShouldEqual(false);
                activeEnumeration.MoveNext().ShouldEqual(false);
                activeEnumeration.RestartEnumeration(filter);
                activeEnumeration.IsCurrentValid.ShouldEqual(false);
            }
        }
Example #12
0
        private void ValidateActiveEnumeratorReturnsAllEntries(GVFltActiveEnumeration activeEnumeration, IEnumerable <GVFltFileInfo> entries)
        {
            activeEnumeration.IsCurrentValid.ShouldEqual(true);

            // activeEnumeration should iterate over each entry in entries
            foreach (GVFltFileInfo entry in entries)
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.Current.ShouldBeSameAs(entry);
                activeEnumeration.MoveNext();
            }

            // activeEnumeration should no longer be valid after iterating beyond the end of the list
            activeEnumeration.IsCurrentValid.ShouldEqual(false);

            // attempts to move beyond the end of the list should fail
            activeEnumeration.MoveNext().ShouldEqual(false);
        }
Example #13
0
        public void EnumerateMultipleEntryListWithWildcardFilter()
        {
            List <GVFltFileInfo> entries = new List <GVFltFileInfo>()
            {
                new GVFltFileInfo(".txt", size: 0, isFolder: false),
                new GVFltFileInfo("a", size: 0, isFolder: false),
                new GVFltFileInfo("B", size: 0, isFolder: true),
                new GVFltFileInfo("c", size: 0, isFolder: false),
                new GVFltFileInfo("D.", size: 0, isFolder: false),
                new GVFltFileInfo("D.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E..log", size: 0, isFolder: false),
                new GVFltFileInfo("E.txt", size: 0, isFolder: false),
                new GVFltFileInfo("E.bat", size: 0, isFolder: false),
            };

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("*").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries);
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("*.*").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.Contains(".")));
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("*.txt").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.EndsWith(".txt", System.StringComparison.OrdinalIgnoreCase)));
            }

            // '<' = DOS_STAR, matches 0 or more characters until encountering and matching
            //                 the final . in the name
            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("<.txt").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.EndsWith(".txt", System.StringComparison.OrdinalIgnoreCase)));
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("?").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.Length == 1));
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("?.txt").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.Length == 5 && entry.Name.EndsWith(".txt", System.StringComparison.OrdinalIgnoreCase)));
            }

            // '>' = DOS_QM, matches any single character, or upon encountering a period or
            //               end of name string, advances the expression to the end of the
            //               set of contiguous DOS_QMs.
            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString(">.txt").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.Length <= 5 && entry.Name.EndsWith(".txt", System.StringComparison.OrdinalIgnoreCase)));
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("E.???").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.Length == 5 && entry.Name.StartsWith("E.", System.StringComparison.OrdinalIgnoreCase)));
            }

            // '"' = DOS_DOT, matches either a . or zero characters beyond name string.
            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("E\"*").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.StartsWith("E.", System.StringComparison.OrdinalIgnoreCase) || entry.Name.Equals("E", System.StringComparison.OrdinalIgnoreCase)));
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("e\"*").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.StartsWith("E.", System.StringComparison.OrdinalIgnoreCase) || entry.Name.Equals("E", System.StringComparison.OrdinalIgnoreCase)));
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("B\"*").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.StartsWith("B.", System.StringComparison.OrdinalIgnoreCase) || entry.Name.Equals("B", System.StringComparison.OrdinalIgnoreCase)));
            }

            using (GVFltActiveEnumeration activeEnumeration = new GVFltActiveEnumeration(entries))
            {
                activeEnumeration.IsCurrentValid.ShouldEqual(true);
                activeEnumeration.TrySaveFilterString("e.???").ShouldEqual(true);
                this.ValidateActiveEnumeratorReturnsAllEntries(activeEnumeration, entries.Where(entry => entry.Name.Length == 5 && entry.Name.StartsWith("E.", System.StringComparison.OrdinalIgnoreCase)));
            }
        }
Example #14
0
 public GVFltActiveEnumerationTests(PatternMatcherWrapper wrapper)
 {
     GVFltActiveEnumeration.SetPatternMatcher(wrapper.Matcher);
 }