public void IsTypeOfShouldAndCombineWithNewIsTypeOfFilter() { PluginFilter original = PluginFilter.Create.IsNamed("original"); Type type = typeof(UnitTest_PluginFilter); PluginFilter tested = original.IsTypeOf(type); Assert.AreEqual(PluginFilter.FilterOperation.And, tested.Operation); Assert.AreEqual(2, tested.SubFilters.Length); Assert.IsTrue(tested.SubFilters.Contains(original)); Assert.IsTrue(tested.SubFilters.Any(x => x.Operation == PluginFilter.FilterOperation.Or && x.SubFilters.Length == 2 && x.SubFilters.Any(y => y.Operation == PluginFilter.FilterOperation.DerivesFrom && y.OperationData == type.AssemblyQualifiedName) && x.SubFilters.Any(y => y.Operation == PluginFilter.FilterOperation.Implements && y.OperationData == type.AssemblyQualifiedName))); }