public void IsSatisfiedWithNoParametersByDefault()
        {
            MethodArgumentsCriteria criteria = new MethodArgumentsCriteria();
            MethodInfo method = GetType().GetMethod("Foo");

            Assert.IsTrue(criteria.IsSatisfied(method), "Was not satisified with a method that takes no parameters by default.");
        }
        public void IsSatisfiedIsPolymorphic()
        {
            // i.e. derived types satisfy the criteria if a base type or interface is
            // specified as one of the parameter types
            MethodArgumentsCriteria criteria
                = new MethodArgumentsCriteria(new Object[] { new TestObject("Bruno", 29) });
            MethodInfo method = GetType().GetMethod("Diddly");

            Assert.IsTrue(criteria.IsSatisfied(method), "Was not satisified with a method that takes a base class as a parameter.");
        }
        public void IsSatisfied()
        {
            MethodArgumentsCriteria criteria = new MethodArgumentsCriteria(
                new Object[] { "Bruno", DateTime.Now, new TestObject("Bruno", 29) });
            MethodInfo method = GetType().GetMethod("BoJangles");

            Assert.IsTrue(criteria.IsSatisfied(method), "Was not satisified with a method that takes a whole buncha parameters.");

            method = GetType().GetMethod("BadBobbyBoJangles");
            Assert.IsFalse(criteria.IsSatisfied(method), "Was satisified with a (bad) method that takes a whole buncha parameters.");
        }
        public void IsSatisfiedWithParamsArguments()
        {
            MethodArgumentsCriteria criteria = new MethodArgumentsCriteria(new Object[] { 29, "Bruno" });
            MethodInfo method = GetType().GetMethod("ParamsArguments");

            Assert.IsTrue(criteria.IsSatisfied(method), "Was not satisified with a method that takes a parameter array ('params') as a parameter.");

            criteria = new MethodArgumentsCriteria(new Object[] { 29, new string[] { "Bruno", "Rick" } });
            method   = GetType().GetMethod("ParamsArguments");
            Assert.IsTrue(criteria.IsSatisfied(method), "Was not satisified with a method that takes a parameter array ('params') as a parameter.");

            criteria = new MethodArgumentsCriteria(new Object[] { 29 });
            method   = GetType().GetMethod("ParamsArguments");
            Assert.IsTrue(criteria.IsSatisfied(method), "Was not satisified with a method that takes a parameter array ('params') as a parameter.");

            criteria = new MethodArgumentsCriteria(new Object[] { 29, "Bruno", "Rick", "James" });
            method   = GetType().GetMethod("ParamsArguments");
            Assert.IsTrue(criteria.IsSatisfied(method), "Was not satisified with a method that takes a parameter array ('params') as a parameter.");

            criteria = new MethodArgumentsCriteria(new Object[] { 29, new string[] { "Bruno", "Rick" }, "James" });
            method   = GetType().GetMethod("ParamsArguments");
            Assert.IsFalse(criteria.IsSatisfied(method), "Was not satisified with a method that takes a parameter array ('params') as a parameter.");
        }
        public void IsNotSatisfiedWithNull()
        {
            MethodArgumentsCriteria criteria = new MethodArgumentsCriteria();

            Assert.IsFalse(criteria.IsSatisfied(null), "Was satisified with null.");
        }