Пример #1
0
        private void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton <IFileIOService, FileIOService>();
            services.AddSingleton <IStoragePathService, WindowsStoragePathService>();
            services.AddSingleton <IPrinterConfigurationManagerService, PrinterConfigurationManagerService>(sp =>
            {
                var service = new PrinterConfigurationManagerService(
                    sp.GetService <IStoragePathService>(),
                    sp.GetService <IFileIOService>());
                service.Load();
                return(service);
            });
            services.AddTransient <PrinterConfigurationView>();
            services.AddTransient <PrintersConfigurationView>();
            services.AddScoped <IPrinterControllerService, MarlinPrinterControllerService>();
            services.AddScoped <IPrinterPacketParser, MarlinPrinterPacketParser>(x =>
            {
                var options = new MarlinPrinterPacketParserOptions()
                {
                };

                return(new MarlinPrinterPacketParser(options));
            });
            services.AddSingleton <ISerialPortAdapter, SerialPortAdapter <WrappedSerialPort> >();
            services.AddTransient <ICommandValidatorService, CommandValidatorService>();
            services.AddTransient <ICommandsDefinitionLoaderService, CommandsDefinitionLoaderService>(x =>
            {
                var service = new CommandsDefinitionLoaderService();
                service.Load("Config\\MarlinCommands.json");
                return(service);
            });
        }
        public void Given_When_Then()
        {
            // Arrange
            var sut = new CommandsDefinitionLoaderService();

            // Act
            sut.Load("Data\\TestCommands.json");

            // Assert
            Assert.Single(sut.CommandDefinitions.Commands);
            Assert.Equal("G10", sut.CommandDefinitions.Commands[0].Key);
            Assert.Equal("Description of the command.", sut.CommandDefinitions.Commands[0].Description);
            Assert.Equal("http://www.somewebsite.com/docs/commands/g10", sut.CommandDefinitions.Commands[0].Url);
            Assert.Equal(4, sut.CommandDefinitions.Commands[0].Parameters.Count);

            Assert.Equal("A", sut.CommandDefinitions.Commands[0].Parameters[0].Token);
            Assert.Equal("Parameter 1.", sut.CommandDefinitions.Commands[0].Parameters[0].Description);
            Assert.True(sut.CommandDefinitions.Commands[0].Parameters[0].Optional);

            Assert.Equal("B", sut.CommandDefinitions.Commands[0].Parameters[1].Token);
            Assert.Equal("Parameter 2.", sut.CommandDefinitions.Commands[0].Parameters[1].Description);
            Assert.False(sut.CommandDefinitions.Commands[0].Parameters[1].Optional);

            Assert.Equal("C", sut.CommandDefinitions.Commands[0].Parameters[2].Token);
            Assert.Equal("Parameter 3.", sut.CommandDefinitions.Commands[0].Parameters[2].Description);
            Assert.False(sut.CommandDefinitions.Commands[0].Parameters[2].Optional);
            Assert.Equal("[P1,P2,P3,Z]", sut.CommandDefinitions.Commands[0].Parameters[2].Requires);

            Assert.Equal("D", sut.CommandDefinitions.Commands[0].Parameters[3].Token);
            Assert.Equal("Parameter 4.", sut.CommandDefinitions.Commands[0].Parameters[3].Description);
            Assert.False(sut.CommandDefinitions.Commands[0].Parameters[3].Optional);
            Assert.Equal("1,2,3,4,5", sut.CommandDefinitions.Commands[0].Parameters[3].Choices);
        }