Пример #1
0
        public void Pass_Correct_Values_To_Server_Client()
        {
            // arrange
            var args          = new[] { "-n", "test" };
            var initMethod    = new InitMethod();
            var clientBuilder = new ServerClientBuilder();
            var dbg           = new DebugEngineProxyBuilder();
            var builder       = new TimeTravelFacadeBuilder(dbg);

            builder.WithGetStartingPosition(new Position(0, 0)).WithGetEndingPosition(new Position(1, 0));

            initMethod.TimeTravelFacade = builder.Build();
            initMethod.ServerClient     = clientBuilder.Build();
            initMethod.Settings         = new Settings
            {
                ServerUrl = "http://localhost:5000"
            };

            // act
            initMethod.Process(args);

            // assert
            clientBuilder.Mock.Verify(
                client => client.InitializeProject("test", new Position(0, 0), new Position(1, 0)), Times.Once);
        }
Пример #2
0
 public AssistTypeBuilderContainer(ModuleBuilder moduleBuilder, TypeBuilder typeBuilder)
 {
     ModuleBuilder = moduleBuilder;
     TypeBuilder   = typeBuilder;
     Fields        = new Dictionary <string, FieldBuilder>();
     InitMethod    = TypeBuilder.DefineMethod("Init", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new Type[] { typeof(IInterceptorCreator) });
     InitMethodIL  = InitMethod.GetILGenerator();
 }
Пример #3
0
        private async Task ExecuteTestInit(object testClassInstance)
        {
            var result = InitMethod?.Invoke(testClassInstance, null);

            if (result is Task t)
            {
                await t;
            }
        }
Пример #4
0
        public void Correctly_Extract_Options_From_String_Array()
        {
            var    initMethod = new InitMethod();
            Action a          = () => initMethod.ExtractOptions(null);

            a.Should().Throw <ArgumentNullException>();
            a = () => initMethod.ExtractOptions(new[] { "" });
            a.Should().Throw <ArgumentOutOfRangeException>();
            var one = initMethod.ExtractOptions(new[] { "--name", "test" });

            one.ProjectName.Should().Be("test");
            var two = initMethod.ExtractOptions(new[] { "-n", "test" });

            two.ProjectName.Should().Be("test");
        }
Пример #5
0
 /// <summary>
 /// Invokes the current method on the given instance.
 /// </summary>
 /// <param name="instance">The object instance</param>
 /// <param name="scope">The current service scope</param>
 /// <param name="managerInit">If manager init should be invoked</param>
 public async Task InvokeAsync(object instance, IServiceScope scope, bool managerInit)
 {
     if (!managerInit)
     {
         if (InitMethod != null)
         {
             await InitMethod.InvokeAsync(instance, scope).ConfigureAwait(false);
         }
     }
     else
     {
         if (InitManagerMethod != null)
         {
             await InitManagerMethod.InvokeAsync(instance, scope).ConfigureAwait(false);
         }
     }
 }
Пример #6
0
    private void AddToSelectable(Component parentSelectableComponent)
    {
        _selectable.transform.SetParent(parentSelectableComponent.transform, true);

        object thisSelectable   = _selectable.GetComponent(SelectableType);
        object parentSelectable = parentSelectableComponent.GetComponent(SelectableType);

        ParentField.SetValue(thisSelectable, parentSelectable);

        Array parentChildren    = (Array)ChildrenField.GetValue(parentSelectable);
        Array newParentChildren = Array.CreateInstance(SelectableType, parentChildren.Length + 1);

        Array.Copy(parentChildren, newParentChildren, holdableChildIndex);
        newParentChildren.SetValue(thisSelectable, holdableChildIndex);
        Array.Copy(parentChildren, holdableChildIndex, newParentChildren, holdableChildIndex + 1, parentChildren.Length - holdableChildIndex);

        ChildrenField.SetValue(parentSelectable, newParentChildren);
        ChildRowLengthField.SetValue(parentSelectable, ((int)ChildRowLengthField.GetValue(parentSelectable)) + 1);

        InitMethod.Invoke(parentSelectable, null);

        InputHelper.InvokeConfigureSelectableAreas(parentSelectableComponent);
    }
Пример #7
0
 public DefaultValueAttribute(InitMethod initMethod)
 {
     InitMethod = initMethod;
 }
Пример #8
0
        private static ServiceDescriptor CreateDescriptor(this Type Service, Type?Implementation, ServiceLifetime Mode)
        {
            var service_type = Implementation ?? Service;

            var ctor = service_type.GetConstructors(BindingFlags.Instance | BindingFlags.Public)
                       .Concat(service_type.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic))
                       .OrderByDescending(c => c.GetParameters().Length)
                       .First();

            var sp          = Expression.Parameter(typeof(IServiceProvider), "sp");
            var get_service = sp.Type.GetMethod("GetService") ?? throw new InvalidOperationException();

            var ctor_parameters = ctor.GetParameters()
                                  .Select(p => Expression.Convert(Expression.Call(sp, get_service, Expression.Constant(p.ParameterType)), p.ParameterType));

            var properties = service_type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty)
                             .Concat(service_type.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetProperty))
                             .Where(p => p.GetCustomAttribute <InjectAttribute>() != null)
                             .Select(p =>
            {
                var type  = Expression.Constant(p.PropertyType);
                var obj   = Expression.Call(sp, get_service, type);
                var value = Expression.Convert(obj, p.PropertyType);
                return((MemberBinding)Expression.Bind(p, value));
            })
                             .ToArray();

            var        ctor_expr = Expression.New(ctor, ctor_parameters);
            Expression instance  = properties.Length > 0
                ? Expression.MemberInit(ctor_expr, properties)
                : ctor_expr;

            var result  = Expression.Variable(Service, "result");
            var methods = service_type.GetMethods(BindingFlags.Instance | BindingFlags.Public)
                          .Concat(service_type.GetMethods(BindingFlags.Instance | BindingFlags.NonPublic))
                          .Where(InitMethod => InitMethod.GetCustomAttribute <InjectAttribute>() != null)
                          .Select(InitMethod =>
            {
                var parameters = InitMethod
                                 .GetParameters()
                                 .Select(p =>
                {
                    var type = Expression.Constant(p.ParameterType);
                    var obj  = Expression.Call(sp, get_service, type);
                    return(Expression.Convert(obj, p.ParameterType));
                });
                return((Expression)Expression.Call(result, InitMethod, parameters));
            })
                          .ToArray();

            var body = methods.Length > 0
                ? Expression.Block(
                new[] { result },
                Expression.Assign(result, instance),
                methods.Length == 1 ? methods[0] : Expression.Block(methods),
                result)
                : instance;

            var factory_expr = Expression.Lambda <Func <IServiceProvider, object> >(body, sp);
            var factory      = factory_expr.Compile();

            return(new ServiceDescriptor(Service, factory, Mode));
        }