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);
    }
Beispiel #7
0
    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);
    }