Example #1
0
        protected void CheckAll <T>(ObjectDeserializationChecker objectDeserializationChecker, params Type[] types)
        {
            var objects = new List <object>();
            var results = new List <RestoreResult>();

            foreach (var type in types.Where(t => !_excludes.Contains(t) && typeof(T).IsAssignableFrom(t)))
            {
                try
                {
                    var constructedType = type;

                    var createMethodInfo =
                        typeof(SpecimenFactory).GetMethod(nameof(SpecimenFactory.Create), new[] { typeof(ISpecimenBuilder) })
                        .MakeGenericMethod(constructedType);


                    var obj = createMethodInfo.Invoke(null, new object[] { Fixture });
                    objects.Add(obj);
                }
                catch (Exception ex)
                {
                    results.Add(RestoreResult.Error(type, ex));
                }
            }

            results.AddRange(RestoreAll(objectDeserializationChecker, objects.ToArray()));
            CheckResults(results.ToArray());
        }
Example #2
0
        protected static RestoreResult[] RestoreAll(ObjectDeserializationChecker checker, params object[] objects)
        {
            var restoreResults = new List <RestoreResult>();

            foreach (var obj in objects)
            {
                try
                {
                    restoreResults.Add(checker.IsRestorable(obj, out string difference) ?
                                       RestoreResult.Ok(obj.GetType()) :
                                       RestoreResult.Diff(obj.GetType(), difference));
                }
                catch (Exception ex)
                {
                    restoreResults.Add(RestoreResult.Error(obj.GetType(), ex));
                }
            }

            return(restoreResults.ToArray());
        }