public Carpenter(HttpClient http, ProgressTask task, HammerSettings settings) { var strengths = GetStrengths(settings.Min, settings.Max); task.MaxValue(strengths.Sum(s => s)); _tool = new Hammer(http, () => Factory.Message(settings), () => task.Increment(1), strengths); }
public async Task WritesFileOnSuccess() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var console = new TestConsole(); var file = new byte[ushort.MaxValue]; Stream writer(string s) => new MemoryStream(file); var command = new HammerCommand(http, writer, console); var settings = new HammerSettings { URL = new Uri("http://localhost"), Min = 1, Max = 1, Filename = "test.png" }; //act var result = await command.ExecuteAsync(null !, settings); //assert var contents = Encoding.UTF8.GetString(file); Assert.Empty(console.Output); Assert.Equal(0, result); Assert.NotEmpty(contents); }
public async Task ShowsExceptionOnFailure() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var console = new TestConsole(); var command = new HammerCommand(http, null !, console); var settings = new HammerSettings(); //act var result = await command.ExecuteAsync(null !, settings); //assert Assert.Equal(1, result); Assert.Contains("exception", console.Output, StringComparison.InvariantCultureIgnoreCase); }
public void URLIsRequired() { //arrange var settings = new HammerSettings { Min = 1, Max = 1, Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.False(result.Successful); }
public void MaxIsRequired() { //arrange var settings = new HammerSettings { URL = new Uri("http://localhost"), Min = 1, Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.False(result.Successful); }
public void SuccessWhenAllExist() { //arrange var settings = new HammerSettings { URL = new Uri("http://localhost"), Min = 1, Max = 1, Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.True(result.Successful); }
public void CanHammer() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var task = new ProgressTask(123, "test", 0, false); var options = new HammerSettings { URL = new Uri("http://localhost"), Min = 1, Max = 100 }; var carpenter = new Carpenter(http, task, options); //act var results = carpenter.Run(); //assert Assert.Equal(19, results.Count); }