Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MainForm"/> class.
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            stopwatch = new Stopwatch();

            var assemblies           = new[] { Assembly.Load("CodeSharper.Core"), Assembly.Load("CodeSharper.Languages"), Assembly.Load("CodeSharper.Languages.CSharp"), Assembly.GetExecutingAssembly() };
            var runnableTypeResolver = new AutoRunnableResolver();
            var valueConverter       = new IntegerValueConverter();
            var interactiveService   = new ReplaceTextInteractiveService(this);

            var serviceFactory = new SimpleServiceFactory();

            serviceFactory.RegisterInteractiveService(interactiveService);

            var runnableFactory          = new DefaultRunnableFactory(runnableTypeResolver.ResolveRunnableTypes(assemblies), valueConverter, serviceFactory: serviceFactory);
            var fileDescriptorRepository = new FileDescriptorRepository("descriptors.json", assemblies);
            var autoDescriptorRepository = new AutoCommandDescriptorRepository(assemblies.SelectMany(assembly => assembly.GetTypes()));
            var descriptorRepository     = new MultiDescriptorRepository(
                Array <IDescriptorRepository>(fileDescriptorRepository, autoDescriptorRepository)
                );

            Bootstrapper   = new Bootstrapper(runnableFactory, descriptorRepository);
            compilerModule = new TextCompilerModule(Bootstrapper);
        }
        public override void Setup()
        {
            base.Setup();

            var commands = new[]
            {
                new CommandDescriptor("IdentityRunnable", String.Empty, Enumerable.Empty <ArgumentDescriptor>(), new[] { "IdentityRunnable" }),
                new CommandDescriptor("IncrementRunnable", String.Empty, new[]
                {
                    new ArgumentDescriptor
                    {
                        ArgumentType = typeof(Double),
                        ArgumentName = "value",
                        DefaultValue = 0,
                        IsOptional   = false,
                        Position     = 0
                    }
                }, new[] { "IncrementRunnable", "increment", "inc" })
            };

            var runnableFactory = new DefaultRunnableFactory(new[] { typeof(IdentityRunnable), typeof(IncrementRunnable) });

            var repository           = new MemoryDescriptorRepository(commandDescriptors: commands);
            var commandCallResolver  = new DefaultCommandCallResolver(repository, runnableFactory);
            var selectorManager      = new DefaultSelectorFactory();
            var nodeSelectorResolver = new DefaultSelectorResolver(selectorManager, repository);
            var runnableManager      = new DefaultRunnableManager();
            var executor             = new StandardExecutor(runnableManager);

            // initialize compiler and control flow factory
            ControlFlowFactory = new DefaultControlFlowFactory(commandCallResolver, nodeSelectorResolver, executor);
            Compiler           = new CodeQueryCompiler();
        }
Exemplo n.º 3
0
            public void ShouldInstantiateRunnable_WhenConstructorAcceptsServiceFactory()
            {
                // Arrange
                var serviceFactory = new ServiceFactoryStub();
                var underTest      = new DefaultRunnableFactory(new[] { typeof(TestRunnableWithServiceFactory) }, serviceFactory: serviceFactory);

                // Act
                var result = underTest.Create(nameof(TestRunnableWithServiceFactory), Enumerable.Empty <KeyValuePair <String, Object> >()) as TestRunnableWithServiceFactory;

                // Assert
                Assert.That(result, Is.Not.Null);
                Assert.That(result.ServiceFactory, Is.SameAs(serviceFactory));
            }
Exemplo n.º 4
0
            public void ShouldInstantiateRunnable_WhenDefaultConstructorIsAvailable()
            {
                // Arrange
                var actualArguments = new Dictionary <String, Object>
                {
                    ["value"]       = "test",
                    ["description"] = "some description"
                };
                var underTest = new DefaultRunnableFactory(new[] { typeof(TestRunnable) });

                // Act
                var result = underTest.Create(nameof(TestRunnable), actualArguments) as TestRunnable;

                // Assert
                Assert.That(result, Is.Not.Null);
                Assert.That(result.Value, Is.EqualTo("test"));
                Assert.That(result.Description, Is.EqualTo("some description"));
            }
Exemplo n.º 5
0
            public void ShouldConvertDoubleToIntegerValue_WhenParameterTypeIsInt32AndIntegerValueConverterIsPassed()
            {
                // Arrange
                var actualArguments = new Dictionary <String, Object>
                {
                    ["number"] = 10.0
                };
                var valueConverter = Substitute.For <IntegerValueConverter>();
                var underTest      = new DefaultRunnableFactory(new[] { typeof(TestRunnable) }, valueConverter);

                // Act
                var result = underTest.Create(nameof(TestRunnable), actualArguments) as TestRunnable;

                // Assert
                Assert.That(result.Number, Is.EqualTo(10));
                valueConverter.Received(1).CanConvert(10.0, typeof(Int32));
                valueConverter.Received(1).Convert(10.0);
            }
Exemplo n.º 6
0
        public override void Setup()
        {
            base.Setup();

            var runnableFactory = new DefaultRunnableFactory(new[] { typeof(ToUpperCaseRunnable), typeof(GetTextRunnable), typeof(ToStringRunnable) });

            var commands    = getCommandDescriptors();
            var selectors   = getSelectorDescriptors();
            var combinators = getCombinatorDescriptors();

            var descriptorRepository = new MemoryDescriptorRepository(selectors, combinators, commandDescriptors: commands);

            var commandCallResolver  = new DefaultCommandCallResolver(descriptorRepository, runnableFactory);
            var selectorManager      = new DefaultSelectorFactory();
            var nodeSelectorResolver = new DefaultSelectorResolver(selectorManager, descriptorRepository);
            var runnableManager      = new DefaultRunnableManager();
            var executor             = new StandardExecutor(runnableManager);

            // initialize compiler and control flow factory
            ControlFlowFactory = new DefaultControlFlowFactory(commandCallResolver, nodeSelectorResolver, executor);
            Compiler           = new CodeQueryCompiler();
        }