예제 #1
0
        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);
        }
예제 #2
0
        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]);
        }
예제 #3
0
        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));
        }
예제 #4
0
        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) { }
            }
        }
예제 #5
0
 public void CombineRequiresRightArgument()
 {
     DoAssert.Throws <ArgumentNullException>(() => PluginFilter.Combine(PluginFilter.FilterOperation.And, PluginFilter.Create.IsNamed("left"), null));
 }