public void CombineShouldReturnLeftIfRightIsPassthrough() { var passthrough = PluginFilter.Create; var expected = PluginFilter.Create.IsNamed("something"); var actual = PluginFilter.Combine(PluginFilter.FilterOperation.And, expected, passthrough); Assert.AreSame(expected, actual); }
public void CombineBecomesSubFilters() { var left = PluginFilter.Create.IsNamed("left"); var right = PluginFilter.Create.IsNamed("right"); PluginFilter tested = PluginFilter.Combine(PluginFilter.FilterOperation.And, left, right); Assert.AreEqual(PluginFilter.FilterOperation.And, tested.Operation); Assert.IsNull(tested.OperationData); Assert.IsNotNull(tested.SubFilters); Assert.AreEqual(2, tested.SubFilters.Length); Assert.AreSame(left, tested.SubFilters[0]); Assert.AreSame(right, tested.SubFilters[1]); }
public void CombineShouldMergeIfLeftIsSameOperator() { var op = PluginFilter.FilterOperation.Or; PluginFilter left1 = PluginFilter.Create.IsNamed("left1"); PluginFilter right1 = PluginFilter.Create.IsNamed("right1"); PluginFilter combined1 = PluginFilter.Combine(op, left1, right1); PluginFilter right2 = PluginFilter.Create.IsNamed("right2"); PluginFilter tested = PluginFilter.Combine(op, combined1, right2); Assert.AreEqual(op, tested.Operation); Assert.AreEqual(3, tested.SubFilters.Length); Assert.IsTrue(tested.SubFilters.Contains(left1)); Assert.IsTrue(tested.SubFilters.Contains(right1)); Assert.IsTrue(tested.SubFilters.Contains(right2)); }
public void CombineOnlyAcceptBooleanOperators() { PluginFilter.FilterOperation[] valid = new PluginFilter.FilterOperation[] { PluginFilter.FilterOperation.And, PluginFilter.FilterOperation.Or, }; var invalid = Enum.GetValues(typeof(PluginFilter.FilterOperation)).OfType <PluginFilter.FilterOperation>().Except(valid); var left = PluginFilter.Create.IsNamed("left"); var right = PluginFilter.Create.IsNamed("right"); foreach (var value in invalid) { try { PluginFilter.Combine(value, left, right); Assert.Fail(); } catch (ArgumentException) { } } }
public void CombineRequiresRightArgument() { DoAssert.Throws <ArgumentNullException>(() => PluginFilter.Combine(PluginFilter.FilterOperation.And, PluginFilter.Create.IsNamed("left"), null)); }