Exemple #1
0
        /// <summary>
        /// Register a factory method for the specified type.
        /// </summary>
        /// <typeparam name="T">The type of object the factory method creates.</typeparam>
        /// <param name="anon">The anonymous data provider to use.</param>
        /// <param name="factory">The factory method.</param>
        /// <exception cref="ArgumentNullException"><paramref name="anon"/> or <paramref name="factory"/> is <c>null</c>.</exception>
        public static void Register <T>(this IRegisterAnonymousData anon, Func <IAnonymousData, T> factory)
        {
            Argument.NotNull(anon, nameof(anon));
            Argument.NotNull(factory, nameof(factory));

            anon.Register(typeof(T), f => factory(f));
        }
Exemple #2
0
        /// <summary>
        /// Sets the minimum item count used when creating collections.
        /// </summary>
        /// <param name="anon">The anon.</param>
        /// <param name="value">The value.</param>
        public static void SetMinimumItemCount(this IRegisterAnonymousData anon, int value)
        {
            Argument.NotNull(anon, nameof(anon));
            Argument.InRange(value, 0, int.MaxValue, nameof(value));

            anon.SetValue(MinItemCountKey, value);
        }
Exemple #3
0
        /// <summary>
        /// Freezes the specified value as the result for any further calls to <see cref="Any"/>
        /// for the specified type.
        /// </summary>
        /// <param name="anon">The anonymous data provider to use.</param>
        /// <param name="type">The type to freeze.</param>
        /// <param name="value">The instance to freeze.</param>
        /// <exception cref="ArgumentNullException"><paramref name="anon"/> or <paramref name="type"/> is <c>null</c>.</exception>
        /// <exception cref="ArgumentException"><paramref name="value"/> is not assignable to <paramref name="type"/>.</exception>
        public static void Freeze(this IRegisterAnonymousData anon, Type type, object value)
        {
            Argument.NotNull(anon, nameof(anon));
            Argument.NotNull(type, nameof(type));
            Argument.IsAssignableTo(value, type, nameof(value));

            anon.Register(type, f => value);
        }
Exemple #4
0
        /// <summary>
        /// Freezes a mock instance as the result for any further calls to <see cref="AnonymousData.Any"/>
        /// for the specified type.
        /// </summary>
        /// <typeparam name="T">The type to freeze.</typeparam>
        /// <param name="anon">The anonymous data provider to use.</param>
        /// <param name="config">The delegate invoked to configure the mock behavior.</param>
        /// <exception cref="ArgumentNullException"><paramref name="anon"/> is <see langword="null"/>.</exception>
        public static void FreezeMock <T>(this IRegisterAnonymousData anon, Action <Mock <T> > config)
            where T : class
        {
            var mock = new Mock <T>();

            config?.Invoke(mock);
            anon.Freeze(mock);
        }
Exemple #5
0
        /// <summary>
        /// Registers the mock object with a delegate to use to configure the mock behavior.
        /// </summary>
        /// <typeparam name="T">The type to mock.</typeparam>
        /// <param name="anon">The anonymous data provider to use.</param>
        /// <param name="config">The delegate invoked to configure the mock behavior.</param>
        public static void RegisterMock <T>(this IRegisterAnonymousData anon, Action <Mock <T> > config)
            where T : class
        {
            Argument.NotNull(anon, nameof(anon));

            anon.Register <Mock <T> >(_ =>
            {
                var mock = new Mock <T>();
                config?.Invoke(mock);
                return(mock);
            });
        }
Exemple #6
0
        /// <summary>
        /// Registers a factory method for the specified property.
        /// </summary>
        /// <typeparam name="T">The type that declares the property.</typeparam>
        /// <typeparam name="TProperty">The type of the property.</typeparam>
        /// <param name="anon">The anonymous data provider to use.</param>
        /// <param name="propertyExpression">An expression representing the property to populate.</param>
        /// <param name="factory">The factory method.</param>
        /// <exception cref="ArgumentNullException"><paramref name="anon"/> or <paramref name="propertyExpression"/> or
        /// <paramref name="factory"/> is <c>null</c>.</exception>
        public static void Register <T, TProperty>(
            this IRegisterAnonymousData anon,
            Expression <Func <T, TProperty> > propertyExpression,
            Func <IAnonymousData, TProperty> factory)
        {
            Argument.NotNull(anon, nameof(anon));
            Argument.NotNull(propertyExpression, nameof(propertyExpression));
            Argument.NotNull(factory, nameof(factory));

            var member   = ReflectionExtensions.GetMemberInfo(propertyExpression);
            var property = member?.Member as PropertyInfo;

            if (property == null)
            {
                throw new ArgumentException("Invalid property expression.");
            }

            anon.Register(property, f => factory(f));
        }
Exemple #7
0
        /// <summary>
        /// Freezes the specified value as the result for any further calls to <see cref="Any"/>
        /// for the specified type.
        /// </summary>
        /// <typeparam name="T">The type to freeze.</typeparam>
        /// <param name="anon">The anonymous data provider to use.</param>
        /// <param name="value">The instance to freeze.</param>
        /// <exception cref="ArgumentNullException"><paramref name="anon"/> is <c>null</c>.</exception>
        public static void Freeze <T>(this IRegisterAnonymousData anon, T value)
        {
            Argument.NotNull(anon, nameof(anon));

            anon.Freeze(typeof(T), value);
        }
Exemple #8
0
 /// <summary>
 /// Freezes a mock instance with default behavior as the result for any further calls to <see cref="AnonymousData.Any"/>
 /// for the specified type.
 /// </summary>
 /// <typeparam name="T">The type to freeze.</typeparam>
 /// <param name="anon">The anonymous data provider to use.</param>
 /// <exception cref="ArgumentNullException"><paramref name="anon"/> is <see langword="null"/>.</exception>
 public static void FreezeMock <T>(this IRegisterAnonymousData anon)
     where T : class =>
 anon.FreezeMock(new Mock <T>());
Exemple #9
0
 /// <summary>
 /// Freezes a mock instance as the result for any further calls to <see cref="AnonymousData.Any"/>
 /// for the specified type.
 /// </summary>
 /// <typeparam name="T">The type to freeze.</typeparam>
 /// <param name="anon">The anonymous data provider to use.</param>
 /// <param name="instance">The mock instance to freeze.</param>
 /// <exception cref="ArgumentNullException"><paramref name="anon"/> is <see langword="null"/>.</exception>
 public static void FreezeMock <T>(this IRegisterAnonymousData anon, Mock <T> instance)
     where T : class =>
 anon.Freeze(instance);