Exemplo n.º 1
0
        /// <summary>Assert.IsTrue(predicate(value))</summary>
        public static void Is <T>(this T value, Expression <Func <T, bool> > predicate, string message = "")
        {
            var condition = predicate.Compile().Invoke(value);

            var    paramName = predicate.Parameters.First().Name;
            string msg       = "";

            try
            {
                var dumper = new ExpressionDumper <T>(value, predicate.Parameters.Single());
                dumper.Visit(predicate);
                var dump = string.Join(", ", dumper.Members.Select(kvp => kvp.Key + " = " + kvp.Value));
                msg = string.Format("\r\n{0} = {1}\r\n{2}\r\n{3}{4}",
                                    paramName, value, dump, predicate,
                                    string.IsNullOrEmpty(message) ? "" : ", " + message);
            }
            catch
            {
                msg = string.Format("{0} = {1}, {2}{3}",
                                    paramName, value, predicate,
                                    string.IsNullOrEmpty(message) ? "" : ", " + message);
            }

            Assert.IsTrue(condition, msg);
        }