public void EarlierRulesTakePrecedence_ExcludeBeforeInclude() { var hierarchy = new TestHierarchy( new SimpleMatchable("root", new SimpleMatchable("dev", new SimpleMatchable("hda"), new SimpleMatchable("hda1"), new SimpleMatchable("hdb"), new SimpleMatchable("hdb1"), new SimpleMatchable("hdb2")), new SimpleMatchable("home", new SimpleMatchable("me", new SimpleMatchable("hdmi")), new SimpleMatchable("you")), new SimpleMatchable("var"))); var parser = new GlobParser(); var enumerator = new MultiGlobMatchEnumerator().Include(parser.Parse("**")); var filter = new MultiGlobMatchFilter(hierarchy.CaseSensitive) .Exclude(parser.Parse("dev/**")) .Include(parser.Parse("**/hd[am]?")); var matches = enumerator.EnumerateMatches(hierarchy) .Where(filter.Filter) .ToArray(); Assert.That(matches.Select(m => m.Item.Name).ToArray(), Is.EquivalentTo(new [] { "hdmi", })); }
public void ContainerExclusionDoesNotApplyRecursively() { var hierarchy = new TestHierarchy( new SimpleMatchable("root", new SimpleMatchable("dev", new SimpleMatchable("hda"), new SimpleMatchable("hda1"), new SimpleMatchable("hdb"), new SimpleMatchable("hdb1"), new SimpleMatchable("hdb2")), new SimpleMatchable("home", new SimpleMatchable("me", new SimpleMatchable("hdmi")), new SimpleMatchable("you")), new SimpleMatchable("var"))); var parser = new GlobParser(); var includes = new [] { parser.Parse("**/h*") }; var excludes = new [] { parser.Parse("home") }; var enumerator = new MultiGlobMatchEnumerator().Include(parser.Parse("**")); var filter = new MultiGlobMatchFilter(hierarchy.CaseSensitive) .Exclude(excludes) .Include(includes); var matches = enumerator.EnumerateMatches(hierarchy) .Where(filter.Filter) .ToArray(); Assert.That(matches.Select(m => m.Item.Name).ToArray(), Is.EquivalentTo(new [] { "hda", "hda1", "hdb", "hdb1", "hdb2", "hdmi" })); }