Untitled

mail@pastecode.io avatar
unknown
csharp
a year ago
2.9 kB
3
No Index
Never
public void AssertThat_SelectRecursivePreOrder_ListsAllChildrenInPreOrder()
{
    var data = SampleData();

    var flattened = EnumerableOf(data)
        .SelectRecursivePreOrder(it => it.Children)
        .Select(it => it.Value)
        .ToList();

    Assert.Equal(13, flattened.Count);
    Assert.Equal(actual: flattened[00], expected: "A1");
    Assert.Equal(actual: flattened[01], expected: "A1B1");
    Assert.Equal(actual: flattened[02], expected: "A1B1C1");
    Assert.Equal(actual: flattened[03], expected: "A1B1C2");
    Assert.Equal(actual: flattened[04], expected: "A1B1C3");
    Assert.Equal(actual: flattened[05], expected: "A1B2");
    Assert.Equal(actual: flattened[06], expected: "A1B2C1");
    Assert.Equal(actual: flattened[07], expected: "A1B2C2");
    Assert.Equal(actual: flattened[08], expected: "A1B2C3");
    Assert.Equal(actual: flattened[09], expected: "A1B3");
    Assert.Equal(actual: flattened[10], expected: "A1B3C1");
    Assert.Equal(actual: flattened[11], expected: "A1B3C2");
    Assert.Equal(actual: flattened[12], expected: "A1B3C3");
}

private class Data
{
    public string Value { get; }
    public IList<Data> Children { get; }

    public Data(string value, IList<Data> children)
    {
        Value = value;
        Children = children;
    }
}

private Data SampleData() =>
    new Data(
        "A1",
        ListOf(
            new Data(
                "A1B1",
                ListOf(
                    new Data(
                        "A1B1C1",
                        ListOf<Data>()
                    ),
                    new Data(
                        "A1B1C2",
                        ListOf<Data>()
                    ),
                    new Data(
                        "A1B1C3",
                        ListOf<Data>()
                    )
                )
            ),
            new Data(
                "A1B2",
                ListOf(
                    new Data(
                        "A1B2C1",
                        ListOf<Data>()
                    ),
                    new Data(
                        "A1B2C2",
                        ListOf<Data>()
                    ),
                    new Data(
                        "A1B2C3",
                        ListOf<Data>()
                    )
                )
            ),
            new Data(
                "A1B3",
                ListOf(
                    new Data(
                        "A1B3C1",
                        ListOf<Data>()
                    ),
                    new Data(
                        "A1B3C2",
                        ListOf<Data>()
                    ),
                    new Data(
                        "A1B3C3",
                        ListOf<Data>()
                    )
                )
            )
        )
    );