public void GenerateCode(CodeGeneratorModel model)
 {
     if (_generateCodeImpl != null)
     {
         _generateCodeImpl(model);
     }
 }
 public void GenerateCode(CodeGeneratorModel model)
 {
     if (_generateCodeImpl != null)
     {
         _generateCodeImpl(model);
     }
 }
        public void ActionInvoker_Invokes_GenerateCode_Method_With_Right_ActionModel()
        {
            //Arrange
            bool methodCalled = false;
            CodeGeneratorModel invokedModel = null;

            var codeGenInstance = new CodeGeneratorSample((model) =>
            {
                methodCalled = true;
                invokedModel = model;
            });

            var typeActivatorMock   = new Mock <ITypeActivator>();
            var serviceProviderMock = new Mock <IServiceProvider>();
            var generatorMock       = new Mock <CodeGeneratorDescriptor>(typeof(CodeGeneratorSample).GetTypeInfo(),
                                                                         typeActivatorMock.Object,
                                                                         serviceProviderMock.Object);

            generatorMock
            .SetupGet(cd => cd.CodeGeneratorInstance)
            .Returns(codeGenInstance);
            generatorMock
            .SetupGet(cd => cd.Name)
            .Returns(typeof(CodeGeneratorSample).Name);

            var actionDescriptor = new ActionDescriptor(generatorMock.Object,
                                                        typeof(CodeGeneratorSample).GetMethod("GenerateCode")); //This is not a perfect unit test as the arrange is using actual instance rather than a mock

            var actionInvoker = new ActionInvoker(actionDescriptor);

            //Act
            actionInvoker.Execute("CodeGeneratorSample StringValuePassed --BoolProperty".Split(' '));

            //Assert
            Assert.True(methodCalled);
            Assert.NotNull(invokedModel);
            Assert.Equal("StringValuePassed", invokedModel.StringProperty);
            Assert.True(invokedModel.BoolProperty);
        }
            public void GenerateCode(CodeGeneratorModel model)
            {

            }
 public void GenerateCode(CodeGeneratorModel model)
 {
 }