exercism/csharp/flatten-array/FlattenArrayTests.cs

86 lines
2.2 KiB
C#

using Xunit;
public class FlattenArrayTests
{
[Fact]
public void No_nesting()
{
var array = new object[]
{
0,
1,
2
};
var expected = new[] { 0, 1, 2 };
Assert.Equal(expected, FlattenArray.Flatten(array));
}
[Fact]
public void Flattens_array_with_just_integers_present()
{
var array = new object[]
{
1,
new object[] { 2, 3, 4, 5, 6, 7 },
8
};
var expected = new[] { 1, 2, 3, 4, 5, 6, 7, 8 };
Assert.Equal(expected, FlattenArray.Flatten(array));
}
[Fact]
public void Number_5_level_nesting()
{
var array = new object[]
{
0,
2,
new object[] { new object[] { 2, 3 }, 8, 100, 4, new object[] { new object[] { new object[] { 50 } } } },
-2
};
var expected = new[] { 0, 2, 2, 3, 8, 100, 4, 50, -2 };
Assert.Equal(expected, FlattenArray.Flatten(array));
}
[Fact]
public void Number_6_level_nesting()
{
var array = new object[]
{
1,
new object[] { 2, new object[] { new object[] { 3 } }, new object[] { 4, new object[] { new object[] { 5 } } }, 6, 7 },
8
};
var expected = new[] { 1, 2, 3, 4, 5, 6, 7, 8 };
Assert.Equal(expected, FlattenArray.Flatten(array));
}
[Fact]
public void Number_6_level_nest_list_with_null_values()
{
var array = new object[]
{
0,
2,
new object[] { new object[] { 2, 3 }, 8, new object[] { new object[] { 100 } }, null, new object[] { new object[] { null } } },
-2
};
var expected = new[] { 0, 2, 2, 3, 8, 100, -2 };
Assert.Equal(expected, FlattenArray.Flatten(array));
}
[Fact]
public void All_values_in_nested_list_are_null()
{
var array = new object[]
{
null,
new object[] { new object[] { new object[] { null } } },
null,
null,
new object[] { new object[] { null, null }, null },
null
};
Assert.Empty(FlattenArray.Flatten(array));
}
}