133 lines
3.3 KiB
C#
133 lines
3.3 KiB
C#
namespace FlexArray.Test;
|
|
|
|
public class FlexArrayStringTests
|
|
{
|
|
// Constructor tests
|
|
[Fact]
|
|
public void Construction_NoSize()
|
|
{
|
|
var array = new FlexArrayString();
|
|
|
|
array.Should().NotBeNull();
|
|
array.Count.Should().Be(0, "no items added yet");
|
|
array.Capacity.Should().Be(FlexArrayString.DefaultStartSize, "default capacity");
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(0)]
|
|
[InlineData(4)]
|
|
[InlineData(20)]
|
|
[InlineData(100_000)]
|
|
public void Construction_WithSize(int size)
|
|
{
|
|
var array = new FlexArrayString(size);
|
|
|
|
array.Should().NotBeNull();
|
|
array.Count.Should().Be(0, "no items added yet");
|
|
array.Capacity.Should().Be(size, "initial capacity set to specified size");
|
|
}
|
|
|
|
[Fact]
|
|
public void Construction_WithInvalidSize()
|
|
{
|
|
var array = new FlexArrayString(-5);
|
|
|
|
array.Should().NotBeNull();
|
|
array.Count.Should().Be(0);
|
|
array.Capacity.Should().Be(0, "negative size provided => set to 0");
|
|
}
|
|
|
|
// Add tests
|
|
[Fact]
|
|
public void AddItem_Single()
|
|
{
|
|
var array = new FlexArrayString();
|
|
|
|
array.Add("Hello");
|
|
|
|
array.Count.Should().Be(1, "one item added");
|
|
array.Capacity.Should().Be(FlexArrayString.DefaultStartSize, "capacity unchanged");
|
|
}
|
|
|
|
[Fact]
|
|
public void AddItem_Multiple_NoGrowth()
|
|
{
|
|
var array = new FlexArrayString();
|
|
|
|
array.Add("Hello");
|
|
array.Add("World");
|
|
array.Add("!");
|
|
|
|
array.Count.Should().Be(3, "three items added");
|
|
array.Capacity.Should().Be(FlexArrayString.DefaultStartSize, "no growth required yet");
|
|
}
|
|
|
|
[Fact]
|
|
public void AddItem_Multiple_Growth()
|
|
{
|
|
var array = new FlexArrayString();
|
|
|
|
void AddItems(int count)
|
|
{
|
|
for (var i = 0; i < count; i++)
|
|
{
|
|
// random string
|
|
array.Add(Guid.NewGuid().ToString());
|
|
}
|
|
}
|
|
|
|
AddItems(FlexArrayString.DefaultStartSize);
|
|
array.Capacity.Should().Be(FlexArrayString.DefaultStartSize);
|
|
|
|
AddItems(2);
|
|
array.Capacity.Should().BeGreaterThan(FlexArrayString.DefaultStartSize, "capacity exceeded, had to grow");
|
|
array.Count.Should().Be(FlexArrayString.DefaultStartSize + 2);
|
|
}
|
|
|
|
// Contains tests
|
|
[Fact]
|
|
public void Contains_Success()
|
|
{
|
|
var array = new FlexArrayString();
|
|
array.Add("Goodbye");
|
|
array.Add("World");
|
|
array.Add("!");
|
|
array.Add("bye...");
|
|
|
|
array.Contains("!")
|
|
.Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Contains_Success_AfterGrowth()
|
|
{
|
|
var array = new FlexArrayString();
|
|
for (var i = 0; i <= FlexArrayString.DefaultStartSize; i++)
|
|
{
|
|
array.Add(i.ToString());
|
|
}
|
|
|
|
array.Contains(array[FlexArrayString.DefaultStartSize - 1])
|
|
.Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Contains_Empty()
|
|
{
|
|
var array = new FlexArrayString();
|
|
|
|
array.Contains("Hi!")
|
|
.Should().BeFalse("collection is empty");
|
|
}
|
|
|
|
[Fact]
|
|
public void Contains_NotFound()
|
|
{
|
|
var array = new FlexArrayString();
|
|
array.Add("Hello");
|
|
array.Add("World");
|
|
|
|
array.Contains("!")
|
|
.Should().BeFalse("not contained in list");
|
|
}
|
|
}
|