public void TagsMatchTestGeneral()
{
var tags = new Tags("/test1/test2/test3/");
Assert.True(tags.Matches(""));
Assert.True(tags.Matches("*"));
Assert.True(tags.Matches("/test1/"));
Assert.True(tags.Matches("/test2/"));
Assert.True(tags.Matches("/test3/"));
Assert.True(tags.Matches("/test*/"));
Assert.True(tags.Matches("/*test*/$"));
Assert.True(tags.Matches("^/test*/"));
Assert.True(tags.Matches("/test1/&/test2/"));
Assert.True(tags.Matches("/test2/|/test3/"));
Assert.True(tags.Matches("/test4/|(/test1/*/test3/)"));
Assert.True(tags.Matches("/test4/|(/test1/&/test3/)"));
Assert.True(tags.Matches("/test5/|(/test4/|/test3/)"));
Assert.True(tags.Matches("/test1/&(/test2/|/test3/)"));
Assert.True(tags.Matches("/test1/&(/test2/|/test4/)"));
Assert.True(tags.Matches("((/*1/|/test4/)&(/test2/&/test3/))"));
Assert.True(tags.Matches("((/*1/&/test*/)&(/test2/&/test3/))"));
Assert.True(tags.Matches("/test[^5]/test[^5]/test[^2]/"));
Assert.False(tags.Matches("*/*test_*/*"));
Assert.False(tags.Matches("*/*fest*/*"));
Assert.False(tags.Matches("/test4/"));
Assert.False(tags.Matches("/test1/&(/test2/&/test4/)"));
Assert.False(tags.Matches("((/*1/&/test4/)&(/test2/&/test3/))"));
Assert.False(tags.Matches("/test[^5]/test[^5]/test[^3]/"));
}