public void FailToCreateModulesFromNullFile() { var factory = new CalculatorModuleFactory(); Assert.Throws <ArgumentNullException>(() => { var module = factory.CreateFromFiles(null); }); }
public void FailToCreateModulesFromEmptyFile() { var factory = new CalculatorModuleFactory(); Assert.Throws <ArgumentException>(() => { var module = factory.CreateFromFiles(string.Empty); }); }
public void FailToCreateModulesFromSingleRelativePathFile() { var factory = new CalculatorModuleFactory(); Assert.Throws <ArgumentException>(() => { var module = factory.CreateFromFiles(Path.Combine(Definitions.CalculatorDirectory, Definitions.CalculatorExtensionFileName)); }); }
public void FailToCreateModulesFromSingleRelativePathDirectory() { var factory = new CalculatorModuleFactory(); Assert.Throws <ArgumentException>(() => { var module = factory.CreateFromDirectories(Definitions.CalculatorDirectory); }); }
public void SuccessfullyCreateModulesFromSingleAbsolutePathFile() { var factory = new CalculatorModuleFactory(); var directory = Path.GetFullPath(Path.Combine(Definitions.CalculatorDirectory, Definitions.CalculatorExtensionFileName)); var module = factory.CreateFromFiles(directory); Assert.NotNull(module); Assert.NotEmpty(module); }
public void SuccessfullyCreateModulesFromSingleAbsolutePathDirectory() { var factory = new CalculatorModuleFactory(); var directory = Path.GetFullPath(Definitions.CalculatorDirectory); var module = factory.CreateFromDirectories(directory); Assert.NotNull(module); Assert.NotEmpty(module); }
private static void LoadRepository(CalculatorRepository repository, string calculatorDirectory) { var factory = new CalculatorModuleFactory(); var modules = factory.CreateFromDirectories(calculatorDirectory); foreach (var module in modules) { System.Diagnostics.Trace.WriteLine($"Loaded module: {module.Function.FunctionInfo.Name}"); } var id = 0; repository.UpdateStore(modules.Select(i => new Calculator(++id, i))); }
public static ICalculatorRepository InitializeCalculatorStore(this IServiceCollection services, string calculatorDirectory) { var di = Directory.CreateDirectory(calculatorDirectory); var fullDirectoryPath = di.FullName; var factory = new CalculatorModuleFactory(); var repository = new CalculatorRepository(); FileSystemWatcher = new FileSystemWatcher() { Path = calculatorDirectory, Filter = "*.dll", NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite, EnableRaisingEvents = true }; FileSystemWatcher.Changed += (s, e) => { LoadRepository(repository, fullDirectoryPath); }; FileSystemWatcher.Created += (s, e) => { LoadRepository(repository, fullDirectoryPath); }; FileSystemWatcher.Deleted += (s, e) => { LoadRepository(repository, fullDirectoryPath); }; LoadRepository(repository, fullDirectoryPath); services.AddSingleton <ICalculatorRepository>(repository); return(repository); }