/// <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(); }
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)); }
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")); }
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); }
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(); }