Пример #1
0
    public void All_rows_must_have_symmetric_contour(char letter)
    {
        var actual = Diamond.Make(letter);
        var rows   = Rows(actual);

        Assert.That(rows, Is.All.Matches <string>(row => LeadingSpaces(row) == TrailingSpaces(row)));
    }
Пример #2
0
    public void First_row_contains_a(char letter)
    {
        var actual             = Diamond.Make(letter);
        var rows               = Rows(actual);
        var firstRowCharacters = rows.First().Trim();

        Assert.Equal("A", firstRowCharacters);
    }
Пример #3
0
    public void First_row_contains_A(char letter)
    {
        var actual             = Diamond.Make(letter);
        var rows               = Rows(actual);
        var firstRowCharacters = rows.First().Trim();

        Assert.That(firstRowCharacters, Is.EqualTo("A"));
    }
Пример #4
0
    public void Diamond_has_square_shape(char letter)
    {
        var actual = Diamond.Make(letter);

        var rows     = Rows(actual);
        var expected = rows.Length;

        Assert.That(rows, Is.All.Matches <string>(row => row.Length == expected));
    }
Пример #5
0
    public void Figure_is_symmetric_around_the_horizontal_axis(char letter)
    {
        var actual = Diamond.Make(letter);

        var rows   = Rows(actual);
        var top    = rows.TakeWhile(row => !row.Contains(letter));
        var bottom = rows.Reverse().TakeWhile(row => !row.Contains(letter));

        Assert.Equal(bottom, top);
    }
Пример #6
0
    [DiamondProperty(Skip = "Remove this Skip property to run this test")] // not resolved yet
    public void Top_of_figure_has_letters_in_correct_order(char letter)
    {
        var actual = Diamond.Make(letter);
        var rows   = Rows(actual);

        var expected             = GetLetterRange('A', letter);
        var firstNonSpaceLetters = rows.Take(expected.Length).Select(row => row.Trim()[0]);

        Assert.Equal(firstNonSpaceLetters, expected);
    }
Пример #7
0
    public void All_rows_must_have_symmetric_contour(char letter)
    {
        var actual = Diamond.Make(letter);
        var rows   = Rows(actual);

        Assert.All(rows, row =>
        {
            Assert.Equal(LeadingSpaces(row), TrailingSpaces(row));
        });
    }
Пример #8
0
    public void Diamond_has_square_shape(char letter)
    {
        var actual = Diamond.Make(letter);

        var rows     = Rows(actual);
        var expected = rows.Length;

        Assert.All(rows, row =>
        {
            Assert.Equal(expected, row.Length);
        });
    }
Пример #9
0
    public void Bottom_left_corner_spaces_are_triangle(char letter)
    {
        var actual = Diamond.Make(letter);

        var rows = Rows(actual);

        var cornerSpaces = rows.Reverse().SkipWhile(row => !row.Contains(letter)).Select(LeadingSpaces);
        var spaceCounts  = cornerSpaces.Select(row => row.Length).ToList();
        var expected     = Enumerable.Range(0, spaceCounts.Count).Select(i => i).ToList();

        Assert.Equal(expected, spaceCounts);
    }
Пример #10
0
    public void All_rows_except_top_and_bottom_have_two_identical_letters(char letter)
    {
        var actual = Diamond.Make(letter);

        var rows = Rows(actual).Where(row => !row.Contains('A'));

        Assert.All(rows, row =>
        {
            var twoCharacters       = row.Replace(" ", "").Length == 2;
            var identicalCharacters = row.Replace(" ", "").Distinct().Count() == 1;
            Assert.True(twoCharacters && identicalCharacters, "Does not have two identical letters");
        });
    }
Пример #11
0
    public void All_rows_except_top_and_bottom_have_two_identical_letters(char letter)
    {
        var actual = Diamond.Make(letter);

        var rows = Rows(actual).Where(row => !row.Contains('A'));

        Assert.That(rows, Is.All.Matches <string>(row =>
        {
            var twoCharacters       = row.Replace(" ", "").Length == 2;
            var identicalCharacters = row.Replace(" ", "").Distinct().Count() == 1;
            return(twoCharacters && identicalCharacters);
        }));
    }
Пример #12
0
    public void DiamondWithLetterD()
    {
        string expected =
            @"---A---
--B-B--
-C---C-
D-----D
-C---C-
--B-B--
---A---";

        var actual = Diamond.Make('D');

        Assert.That(actual, Is.EqualTo(expected));
    }
Пример #13
0
    public void Diamond_is_not_empty(char letter)
    {
        var actual = Diamond.Make(letter);

        Assert.NotEmpty(actual);
    }